是什麼beetween的區別:iPhone - 使用自= [超級初始化]時,[超級INIT]失敗
// 1
-(id) init {
self = [super init];
if (self) {
... do init ....
}
return self;
}
// 2 - I guess it's exactly the same as previous
-(id) init {
if (self = [super init]) {
... do init ....
}
return self;
}
// 3 - is this one a really bad idea and if yes, Why ?
-(id) init {
self = [super init];
if (!self) return nil;
... do init ....
return self;
}
// 4 - I think this one sounds OK, no ? But what is returned... nil ?
-(id) init {
self = [super init];
if (!self) return self;
... do init ....
return self;
}
編輯:彼得M.上架感謝
// 5 - I really like the readability of this one
-(id) init {
if(!(self = [super init])) return self; // or nil
... do init ....
return self;
}
避免消極的檢查?爲什麼? 3將實際上由任何編碼標準推薦。 – Sulthan 2012-03-03 00:05:56
蘇丹,你能指點我嗎?從我的觀點來看,如果蘋果沒有決定使用3,那麼我們可能會更好。 ;-) – joshis 2012-03-03 00:12:57
你有沒有讀過蘋果的例子? :)他們的代碼通常絕對不可讀,所以我永遠不敢說「蘋果使用它,這就是爲什麼它更好」。我無法提供任何鏈接 - 編碼標準通常基於人們的經驗,我無法找到任何涵蓋該主題的內容。你會在一個if語句中嵌套函數/方法的全部內容嗎?爲什麼'init'方法應該是特殊的? – Sulthan 2012-03-03 01:17:44