我一直在宗教上做了几年。检查的self
有效性调用[super init...]
方法后:为什么我们都在init方法中检查if(self)?
self = [super init];
if (self != nil) {
// initialize
}
return self;
您可以通过多种方式做到这一点,因为好听this question总结了,但问题是关于语法,我的是这个概念。
我最近从一个学习Objective-C的同事那里得到了一个问题,他问我“为什么我应该测试自己的存在,是不是很明显它在那里?我的简短回答是“错,是的,有些情况下可能会失败,所以这就是原因。”但漫长的回答是,我真的不明白为什么我们在任何地方进行测试,当它发生失败的情况非常罕见。 Apple's reference guide告诉我们一些特定的情况,例如初始化文件或处理单例时。但这些听起来像是[super init]
s应该正常工作的规则的非常罕见的例外。
所以我对你的问题是这样的:为什么我们总是测试自我的有效性?我们是否只是在所有地方实施它,以便在发生这种情况时捕捉到这种异常?为什么不跳过整个if (self)
的事情,并初始化我们的对象,如果它成功的机会是100%(或从未如此)?
P.S.我意识到这个问题必须是一个愚蠢的做法,因为它非常基础,但是我的搜索查询还有很多关于初始化语法的其他问题。杜佩链接表示赞赏,欢呼!
可能重复[在Objective-C中,为什么我应该检查self = \ [super init \]是不是nil?](http://stackoverflow.com/questions/1287950/in-objective-c-why-应该我检查,如果自我超级初始化不是零) – JeremyP 2012-03-15 15:58:39