Wednesday, February 8, 2012

create an Object and NIL value


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

2 comments:

  1. 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?

    It'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?

    ReplyDelete
  2. 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.

    Hopefully this answers your question.

    ReplyDelete