我一直在宗教上做了幾年。檢查的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