我目前有一個已經擁有超類的類。我意識到我也想從不同的現有類中調用方法,但沒有將它定義爲超類。是否有可能將第二個超類分配給我現有的子類,或者這是不可能的。是否有可能創建一個在Objective-C中有兩個超類的類?
如果可能的話,我該怎麼去做。如果這是不可能的,什麼是解決方法?
我目前有一個已經擁有超類的類。我意識到我也想從不同的現有類中調用方法,但沒有將它定義爲超類。是否有可能將第二個超類分配給我現有的子類,或者這是不可能的。是否有可能創建一個在Objective-C中有兩個超類的類?
如果可能的話,我該怎麼去做。如果這是不可能的,什麼是解決方法?
Objective C不支持多重繼承,但您可以通過使用接口來實現此功能。
這是不可能的。 Objective-C是單一繼承。
根據您的情況,組成可能是正確的方式來解決這個問題:假設你有類Foo,並且還希望美孚的情況下,以繼承類欄行爲。
您可以將Bar的一個實例作爲Foo中的一個實例變量並委託給它進行方法調用。由於Objective-C是動態類型的,因此您可以簡單地將您的Foo實例作爲Bar實例,並將其傳遞給期望Bar的任何代碼。只要Foo響應Bar提供的所有相同方法,就不會有人知道其中的差別。
如果你想變得很花哨(或者如果Bar有太多的方法,並且你不想寫出每個方法),你可以使用消息轉發將你的Foo類不識別的消息傳遞給酒吧實例。查閱關於forwardInvocation:
的文檔,看看它是如何工作的。