Какао-Touch. В чем разница между этими методами NSMutableData?
Одна вещь, в которой я немного неясна, - это разница между этими методами NSMutableArray:
// Class Method Style
NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];
а также
// Instance Method Style
NSMutableData *myMutableDataInstance = nil;
myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];
Под капотом, что на самом деле делает метод класса? Чем он отличается от метода экземпляра?
Ура, Дуг
1 ответ
Решение
Метод класса создает и автоматически выпускает объект NSMutableArray.
Метод instance инициализирует объект, который вы должны выделить самостоятельно. Код, который вы написали, на самом деле ничего не сделает, потому что myMutableArrayInstance
является nil
, Метод класса примерно эквивалентен этому:
NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];
И, как отмечает Питер Хоси в комментариях, это действительно означает следующее:
NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
initWithCapacity:WholeLottaData]
autorelease];
который будет иметь результаты, отличные от приведенных выше, если initWithCapacity:
Метод возвращает другой объект.