什么是"if(self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])"

Gre*_*reg 2 objective-c ios

想知道if (self = [super ...以下代码的重点是什么?它试图防范什么情况?

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

采取从这里.

ugh*_*fhw 5

它正在防止超级实现返回nil.如果超类决定它不能初始化对象,它可以释放它并返回nil,如果你试图进行任何初始化,那么会因为你试图取消引用nil指针而使程序崩溃.