我经常使用 initWithNibName
函数来初始化我的 View Controller 中的内容。我只是注意到生成的 initWithNibName
函数对 self
进行了 nil 检查。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
//do some initializing
}
return self;
}
为什么对 self
进行 nil 检查,如果不是 nil 则运行初始化代码?这个 if-statement
会是假的吗?为什么苹果坚持要我在这里做一个零检查?
最佳答案
简单地说,如果由于“任何”原因而导致您的 Nib 未加载时出现任何情况,则不会有任何初始化 Controller 的感觉,因此
a self.backgroundcolor = [UIColor blackColor];只有当 self 不是 'nil' 时才会执行。
否则,该方法将只返回'nil'
关于iOS 为 initWithNibName 生成的函数结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986132/