我在理解它的工作原理时遇到问题。分配 self 从 init 消息返回似乎很奇怪
- (id)init
{
if((self=[super init])) {
//code here for setting up
}
return self;
}
最佳答案
init
方法首先将隐式 self
局部变量(self
是传递给方法的两个隐藏参数之一)分配给返回值父类(super class)指定的初始值设定项的值。这背后的原因是初始化器可以返回与接收消息的对象不同的对象,例如,当无法正确初始化接收器时,或者当返回现有实例以避免初始化新实例时。
设置 self
后,if
语句确保仅当 self
不为 nil
时才会初始化实例变量>。如果self
为nil
,则访问实例变量的内存可能会出错。很少有类返回 nil
,但它仍然是一个有效的返回值。
这在 Implementing an Initializer 中有描述。 .
关于iphone - 初始化方法模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799771/