Какао-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: Метод возвращает другой объект.

Другие вопросы по тегам