自定義類時(shí)娘侍,一般都要需要提供初始化方法咖刃。正確的設(shè)置初始化方法,才能保證類的使用者使用自定義類時(shí)不出現(xiàn)問(wèn)題憾筏。
- 提供一個(gè)designated initializer(能夠?yàn)閷?duì)象提供必要信息以便其能完成工作的初始化方法)嚎杨,并且類的其它初始化方法都調(diào)用這個(gè)designated initializer。
這樣處理的好處是氧腰,當(dāng)?shù)讓訑?shù)據(jù)存儲(chǔ)機(jī)制改變時(shí)枫浙,只需要修改designated initializer中的代碼。
子類的designated initializer需要調(diào)用父類的designated initializer容贝。
自定義類的designated initializer如果與其父類的designated initializer名稱不同自脯,就需要覆寫父類designated initializer,自定義類的designated initializer再調(diào)用覆寫的方法斤富。
如果父類的初始化方法不適合子類膏潮,就需要在子類中覆寫父類的初始化方法,并且拋出異常满力。
類的designated initializer可能不止一個(gè)焕参。當(dāng)存在一種完全不一樣的初始化方式時(shí)轻纪,就還需要提供另外一個(gè)designated initializer。參考NSCoding協(xié)議叠纷。