現在我已經有這個問題混淆了我的思想相當長的一段時間,我真的需要有人爲我澄清這一點。指定初始化程序,請澄清。
1)編譯器在被子類型的init方法調用時如何確定指定的初始化方法?因爲它被認爲是覆蓋面最廣的一個。
2)當使用多個init方法進行子類化時,每個類是否都有自己指定的初始化方法?對問題2的回答會增加對理解這一點的幫助。
3)當多個類有一個指定的初始化程序時,其他init方法如何在其類中調用指定的初始化程序?以及他們怎麼也不會調用任何其他初始化器?爲什麼指定的初始化器?它有什麼特別之處?
如果不是調用DI,而是直接使用便捷初始值設定項直接調用子類中的[super init]或[super init ...],而不是首先調用DI?這也是你的意思,「因爲你不能指定Objective-C方法簽名的默認參數值。」 P.s奇妙地解釋。 –
便利初始值設定項的每個實現都應該調用它自己的DI,如果它有一個,或者它的超級否則。所以是的,你應該這樣做。我從來不需要調用多個初始化器來使用一個類。至於默認參數,如果沒有給出默認參數,則不能指定默認值。其他語言允許類似'func foo(字符串名稱,字符串類別=「無」)',這樣如果您不指定值,則會分配默認值。 –