Objective C - How do I use initWithCoder method?

前端 未结 2 988
再見小時候
再見小時候 2020-12-02 18:23

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 =         


        
2条回答
  •  囚心锁ツ
    2020-12-02 18:44

    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];
    

提交回复
热议问题