I am used to have this in my code
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");
this is a result from console
var A is not nil
I thought var A should be nil then. So my question is what does blue line do and why var A is not nil after all
You just allocated varA, then you have a ClassA object, you didn't release it or setting it to nil, so why did you expect it to be nil?
ReplyDeleteIt's normal behaviour, it's like you just made (alloc) yourself a nice cup of coffee, if you didn't drink/throw (release or setting it to nil) your coffee should still be there, right?
So, nope the nil value is gone right after you allocate the object in a memory space, also you set the values of the ivars to something in the calling for the init method in which you probably call a [super init]; or something similar so you can get the features of the father object.
ReplyDeleteHopefully this answers your question.