我在理解它的工作原理时遇到问题。分配 self 从 init 消息返回似乎很奇怪
- (id)init
{
if((self=[super init])) {
//code here for setting up
}
return self;
}
The init
方法首先分配隐式self
局部变数 (self
是传递给方法的两个隐藏参数之一)到超类的返回值指定初始化器。这背后的原因是初始化器可以返回与接收消息的对象不同的对象,例如,当无法正确初始化接收器时,或者当返回现有实例以避免初始化新实例时。
After self
被设置后,if
语句确保实例变量仅在以下情况下才被初始化:self
is not nil
. If self
is nil
,访问实例变量的内存可能会出错。返校班很少nil
但它仍然是一个有效的返回值。
这在实现初始化程序 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAllocInit.html#//apple_ref/doc/uid/TP30001163-CH22-SW4.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)