阅读背景:

Objective-C语言的 if ( self = [super init] )

来源:互联网 

我们先假定现在自己创立了个类,我们起名叫MyObject,继承于NSObject。
继承知道吧,就是你这个子类(MyObject)如果甚么都不写的话,和父类(NSObject)就是如出一辙的。
OC里几近所有的类的本源都是NSObject,都是在NSObject的基本上增长成员变量、函数。
父类不是你自己写的类,你不敢保证它是安全的,能否胜利初始化,你有可能不知道里面是甚么模样的。

self = [super init],你可能对这步做法可能难以懂得。self指向了父类初始化的内存地址。类的初始化函数如果失败会返回nil,随后self也为nil。
那末 if(self = nil),你往下的初始化工作都是对nil做的,初始化失败。
如果还想有更深的懂得请看下面一段:
父类进行初始化时,用的是子类对象指针self,父类的init办法有可能对这个指针指向的内存区作了大的变革(有可能把这个指针所指的内存释放了,重新分配了另外一块内存区域返回来,这时候这个返回的指针与本来的指针是指向不同地址的),所以父类初始化后要重新返回指针。父类返回的和子类的self的类型都为id类型(通用类型)。父类的init办法若返回的指针与self不一样,在父类的init办法中已作了release和新的内存分配,不须要自己再去release self,直接用父类init办法返回的指针便可以够了。

if ( self = [super init] )
{
    只要知道你须要在此你初始化的工作便可

}

return self;我们先假定现在自己创立了个类,我们起名叫MyObject,继承于NSObject。
继承知道吧,就是




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: