我運行此代碼在5類的實例:當你運行self = [super init]並返回nil時,什麼是正確的響應?
-(id)init {
self = [super init];
if (self) {
// my init code here
}
return self;
}
...和自我回報爲零。我知道這是正確的程序,應該完成。但是,如果自我回歸零,我的迴應是什麼?拋出警告程序失敗並正在終止?忽略它 ?或者是否有推薦的程序安全地繼續?
我把它看作Objective-C的一個錯誤,可以讓你發送消息給nil。這意味着你可能會耗盡內存,直到很長一段時間後,當你不知道如何優雅地處理問題時,纔會發現它。 –
你將如何精確地用完內存? –
@Don從-init方法返回nil表示初始化過程失敗。如果你的內存不足,+ alloc將返回零,-init永遠不會被調用。我更喜歡Objective-C範例。每當您創建一個新對象或收到一個對象作爲方法參數時,您忘記檢查返回值,您不必擔心NULL指針異常。你只需要明確地檢查你的應用中重要的那些。 –