爲了美觀起見,我決定改變這一點:?爲什麼((自我= [超級的init])的工作,但((自我= [超級的init]))不
if ((self = [super init])) {
// init self
}
return self;
到這一點:。
if (!(self = [super init])) return nil;
// init self
return self;
從理論上講,他們做同樣的事情,第一個是經典的方式,只要作品調試第二個,我發現,它幾乎工作的「如果」做對, init代碼也是,但是在返回「self」之後,調試器返回「if」並返回nil!
我用第二個類創建的所有類我正在恢復使用「正確」的方式,因爲它們以nil啓動,但我真的想知道爲什麼它的行爲如此!恐怕這可能是其他問題的結果!
如果在Xcode 4中發生這種情況,那麼原因是調試器只是在ObjC方法中大肆渲染和跳轉。 – JustSid 2011-05-07 12:59:17
這不是隻有調試器的行爲。它真的返回「無」給調用者。噢,並且調用init代碼(包括一些「NSLog」我放在那裏:) – 2011-05-07 13:02:55
@Eduardo Costa:好的,那麼不要介意我的評論 – JustSid 2011-05-07 13:03:43