【Effective Objective-C 2.0 讀書筆記】第十六條:提供“全能初始化方法”

第十六條:提供“全能初始化方法”

我們把這種可為對(duì)象提供必要信息以便其能完成工作的初始化方法叫做“全能初始化方法”(designated initializer)。

如果創(chuàng)建類的實(shí)例的方式不止一種,那么這個(gè)類就會(huì)有多個(gè)初始化方法。

這當(dāng)然會(huì)很好,不過仍然要在其中選定一個(gè)作為“全能初始化方法”,令其他初始化方法都來調(diào)用它。

于是,只有在全能初始化方法中,才會(huì)存儲(chǔ)內(nèi)部數(shù)據(jù)。

這樣的話,當(dāng)?shù)讓訑?shù)據(jù)存儲(chǔ)機(jī)制改變時(shí),只需要修改此方法的代碼就好,無需改動(dòng)其他初始化方法。

類繼承時(shí)需要注意的一個(gè)重要問題:如果子類的全能初始化方法與超類方法的名稱不同,那么總應(yīng)覆寫超類的全能初始化方法。

每個(gè)子類的全能初始化方法都應(yīng)該調(diào)用其超類的對(duì)應(yīng)方法,并逐層向上,然后再執(zhí)行與本類有關(guān)的任務(wù)。

【要點(diǎn)】

在類中提供一個(gè)全能初始化方法,并于文檔里指明。其他初始化方法均應(yīng)調(diào)用此方法。

若全能初始化方法與超類不同,則需覆寫超類中的對(duì)應(yīng)方法。

如果超類的初始化方法不適用于子類,那么應(yīng)該覆寫這個(gè)超類方法,并在其中拋出異常。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容