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