создать объект и значение NIL - PullRequest
1 голос
/ 07 февраля 2012

Я привык иметь это в своем коде

myClass.h

@property ( strong, nonatomic ) ClassA *varA

myClass.m

varA  = [[ClassA alloc] init];
if ( varA isEqual:nil )
   NSLog@"var A is nil");
else
   NSLog@"var A is not nil");

это результат консоли

var A is not nil

Я думал, что тогда var A должен быть равен нулю.Поэтому мой вопрос в том, что делает синяя линия и почему переменная A не равна нулю в конце концов

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

Вы только что выделили varA, затем у вас есть объект ClassA, вы не освободили его или не присвоили ему значение nil, так почему вы ожидали, что он будет равен nil?

Это нормальное поведение, как будто вы только что сделали (распределите) себе хорошую чашку кофе, если вы не выпили / не бросили (не отпустили или не установили его на ноль), ваш кофе все еще должен быть там, верно?

0 голосов
/ 07 февраля 2012

Итак, нет, значение nil пропадает сразу после того, как вы выделите объект в области памяти, также вы устанавливаете значения ivars на что-то в вызове для метода init, в котором вы, вероятно, вызываете [super init];или что-то подобное, чтобы вы могли получить характеристики объекта отца.

Надеюсь, это ответит на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...