Какао-Touch. В чем разница между этими методами NSMutableData? - PullRequest
1 голос
/ 21 октября 2009

Мне немного неясно, в чем разница между этими NSMutableArray Methods:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

и

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

Под капотом, что именно здесь делает метод класса? Чем он отличается от метода экземпляра?

Ура, Дуг

1 Ответ

5 голосов
/ 21 октября 2009

Метод класса создает и автоматически выпускает объект NSMutableArray.

Метод instance инициализирует объект, который вы должны выделить самостоятельно. Код, который вы написали, на самом деле ничего не сделает, потому что myMutableArrayInstance - это nil. Метод класса примерно эквивалентен этому:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

И, как отмечает Питер Хоси в комментариях, это действительно означает следующее:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

, который будет иметь результаты, отличные от приведенных выше, если метод initWithCapacity: возвращает другой объект.

...