初学objective-c看到initWithCoder的一般实现方法一直不解,在cocoachina上看到牛人讲解,猛然醒悟:
- (id) initWitchCoder:(NSCoder *)aCoder
{
if(self = [super init])
{
self.var = [aCoder decoderObjectForkey:keyValue];
}
}
论坛的讲解如下:
这个问题这么分析. 我们要完成的工作是对子类对象进行初始化.
这个我们可以把这个子类对象的初始化分成两部分: 继承自父类的对象的初始化 + 子对象本身对象的初始化.
所以[super init] 其实是对父类对象进行初始化,
if( self = [super init] )
{
//init local vars
}
在括号里面再对子类新增对象(也可以对父类对象)的初始化操作.
self = [super init] 其实就是"subclass is a instance of the superclass"这条面向对象原则的体现.
给出链接:
阅读(3072) | 评论(0) | 转发(0) |