2012-09-14 27 views
5

是否有意義寫在一個自定義的初始化方法self = [super init];同時繼承NSObject的?當知道其他類的子類時,我知道它是必要的,因爲它可能有自定義的初始化,但NSObject init方法是否可以做任何事情?NSObject的init方法是否可以做任何事情?

+4

它是一個很好的習慣進入。 – Kyle

回答

9

的對象是不是就可以使用了,直到它已被初始化。 NSObject類中定義的init方法不進行初始化;它只是返回自我。

所以基本上你不一定要在NSObject子類中調用[super init],但我仍然會推薦它。這只是一個更好的設計。如果你改變超類,它仍然可以工作。

來源:NSObject Class Reference

+5

+1「我仍然會推薦它」 - NSObject的實施可能會改變,你可以改變你的類的父類等,這是不是你的類的工作,以推斷其超類的行爲的東西。 – Tim

+0

謝謝,這很有道理。 :) –

+4

不,實際上,如果你沒有'self = [super init ...];',你的代碼是錯誤的**。無論NSObject的實現是什麼,始終在各處使用模式以最大限度地降低脆弱性,並且因爲遵循記錄的正確模式會導致更易維護的應用。 – bbum

相關問題