iphone - 初始化方法模式

标签 iphone objective-c ios4

我在理解它的工作原理时遇到问题。分配 self 从 init 消息返回似乎很奇怪

- (id)init
{
    if((self=[super init])) {
       //code here for setting up
    }

    return self;    
}

最佳答案

init 方法首先将隐式 self 局部变量(self 是传递给方法的两个隐藏参数之一)分配给返回值父类(super class)指定的初始值设定项的值。这背后的原因是初始化器可以返回与接收消息的对象不同的对象,例如,当无法正确初始化接收器时,或者当返回现有实例以避免初始化新实例时。

设置 self 后,if 语句确保仅当 self 不为 nil 时才会初始化实例变量>。如果selfnil,则访问实例变量的内存可能会出错。很少有类返回 nil,但它仍然是一个有效的返回值。

这在 Implementing an Initializer 中有描述。 .

关于iphone - 初始化方法模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799771/

相关文章:

iphone - 如何制作这样的自定义模式 uiview?

ios - Xcode 5 中的导航栏问题

ios - UIActivityViewController 分享图片到微信不起作用

iphone - iOS4 sleep 时 Wifi 连接无法保持

ios - 将计算属性从类别转换为 Swift 扩展

objective-c - cocoa 自定义NSDocument保存

iphone - 如何阻止 MPMoviePlayerController 在 iOS4.0+ 中的 iPod 控件上显示我的应用程序图标?

ios - Swift - 实例化新 View Controller 时如何保留对旧 View Controller 的引用?

iphone - 我们可以通过蓝牙将多少台设备与 iPhone 配对?

iphone - 使用 mencoder、handbrake cli 或 ffmpeg 自动检测旋转并相应地旋转视频