ObjC-Почему это неправильно, когда реализуют методы [alloc] и [init] раздельно? [Дубликат]

На этот вопрос уже есть ответ здесь:

Почему я не должен разделять alloc и init? 4 ответа

Никогда не инициализируйте объект, не переназначая указатель на этот объект. Как пример, несделать это:

NSObject *someObject = [NSObject alloc];
[someObject init];

Если вызов init возвращает какой-то другой объект, выостанется указатель на объект, который был первоначально выделен, но никогда не инициализирован.

На самом деле, это пример в Apple,документ ObjC, но ям, не совсем понятно с этим, то есть почемуNSObject *someObject = [[NSObject alloc] init] могу обещать вернуть предмет, который нам просто нужен, покаNSObject *someObject = [NSObject alloc]; [someObject init]; не могу?

 abyn09 нояб. 2012 г., 05:03
en, [[... alloc] init] эквивалентно [... new], если вам просто нужен объект только для init, который устанавливает значения переменных экземпляра равными 0, если они есть.
 Anoop Vaidya09 нояб. 2012 г., 04:49
Всякий раз, когда мне нужно сделать [[.... alloc] init], я предпочитаю [... new]. Сохраняет набор текста и код выглядит меньше. Если вам нужно сделать initWith ... тогда нет другого варианта.

Ответы на вопрос(1)

что -init может вернуть что-то отличное от someObject. В вашем примере вы должны переназначить указатель на результат -init.

 abyn24 нояб. 2012 г., 16:30
я уже знал ответ на этот вопрос, что за глупый вопрос ...
 abyn09 нояб. 2012 г., 05:12
Но когда и как он может вернуть что-то отличное от someObject? И как переназначить указатель на результат -init в той версии, выделенной init init?

Ваш ответ на вопрос