ios - "if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) "有什么意义

标签 ios objective-c

想知道以下代码中的 if (self = [super ...) 的意义是什么?它试图防止什么情况?

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
        // STUFF CONFIGURED HERE
    }
    return self;
}

拍摄from here

最佳答案

它正在防止 super 实现返回 nil。如果父类(super class)决定它无法初始化该对象,它可以释放它并返回 nil,如果您尝试进行任何初始化,那么程序就会崩溃,因为您试图取消引用 nil 指针。

关于ios - "if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) "有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268954/

相关文章:

ios - 特定价格等级的本地 App Store 货币是否可变?

iphone - 如何从一个 iPhone 麦克风向另一个 iPhone 扬声器发送和接收实时音频?

iphone - 异常退出,信号 5 : Trace/BPT trap: 5

iphone - 自定义粒子系统

objective-c - @char 作为 NSDictionary 中的键

ios - UIScrollView 的 ContentView 中的 UIViewControllers?

ios - 如何使用 SCNTransformConstraint 来限制节点的 Z 值?

ios - 在 MPMoviePlayerController 中全屏播放视频问题

iphone - 如何从“表格 View ”单元格中删除白色

ios - Objective-C 使用带有递归的 block