Прикосновение какао.В чем именно разница между этими методами NSMutableData?

StackOverflow https://stackoverflow.com/questions/1600283

Вопрос

Одна вещь, которую я немного не понимаю, - это разница между этими методами 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: метод возвращает другой объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top