Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective C - How do I use initWithCoder method?

I have the following method for my class which intends to load a nib file and instantiate the object:

- (id)initWithCoder:(NSCoder*)aDecoder  {     if(self = [super initWithCoder:aDecoder]) {         // Do something     }     return self; } 

How does one instantiate an object of this class? What is this NSCoder? How can I create it?

    MyClass *class = [[MyClass alloc] initWithCoder:aCoder]; 
like image 221
aryaxt Avatar asked Oct 15 '10 15:10

aryaxt


1 Answers

You also need to define the following method as follows:

- (void)encodeWithCoder:(NSCoder *)enCoder {     [super encodeWithCoder:enCoder];      [enCoder encodeObject:instanceVariable forKey:INSTANCEVARIABLE_KEY];      // Similarly for the other instance variables.     .... } 

And in the initWithCoder method initialize as follows:

- (id)initWithCoder:(NSCoder *)aDecoder {     if(self = [super initWithCoder:aDecoder]) {        self.instanceVariable = [aDecoder decodeObjectForKey:INSTANCEVARIABLE_KEY];         // similarly for other instance variables        ....    }     return self; } 

You can initialize the object standard way i.e

CustomObject *customObject = [[CustomObject alloc] init]; 
like image 160
SegFault Avatar answered Sep 20 '22 05:09

SegFault