В чем разница между [Class new] и [[Class alloc] init] в iOS? [дубликат]




Возможные Дубликаты:
alloc, init и new в Objective-C






Я немного запутался [Class new] и [[Class alloc] init]. Я определил объект content используя [Class new] и [[Class alloc] init].



(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];


мой вопрос о различиях между [Class new] и [[Class alloc] init]. Для меня, (1) и (2) одинаковы. Если (1) и (2) похожи, то почему мы используем [[Class alloc] init] большую часть времени, по сравнению с [Class new]? Я думаю, что должна же быть какая-то разница.



Пожалуйста, объясните различия, плюсы и минусы обоих?

701   3  

3 ответов:

распределение : метод класса NSObject. Возвращает новый экземпляр получающего класса.

Init : метод экземпляра NSObject. Реализовано подклассами для инициализации нового объекта (приемника) сразу после выделения памяти для него.

New : метод класса NSObject. Выделяет новый экземпляр получающего класса, отправляет ему сообщение init и возвращает инициализированный экземпляр объект.

релиз : метод экземпляра делегата NSObject. Уменьшает количество ссылок получателя.

Autorelease : метод экземпляра делегата NSObject. Добавляет получателя в текущем autorelease пул.

сохранить: метод экземпляра делегата NSObject. Увеличивает счетчик ссылок приемника.

копия : метод экземпляра делегата NSObject. Возвращает новый экземпляр, который копия приемника.

Итак, в заключение мы можем сказать, что

alloc идет с init

new = alloc + init

The +new метод просто сокращенно для +alloc и -init. Семантика владения идентична. Единственное преимущество использования +new Это то, что он более лаконичен. Если вам нужно предоставить аргументы инициализатору класса, вам придется использовать +alloc и методы.

здесь: alloc, init и new в Objective-C

в основном это вопрос современного против традиционного. Самое прямое преимущество init над new заключается в том, что существует много пользовательских методов init.

Comments

    Ничего не найдено.