我正在創建一個Cocoa庫,用於連接到我公司生產的嵌入式設備。我有一個超類,我們稱之爲Device
,以及一些子類,爲不同的設備型號,我們稱之爲Device1
,Device2
等創建後更改實例化對象的子類
我需要支持的設備型號的自動檢測,這可以在連接並登錄到設備後確定。由於登錄代碼對所有設備都是通用的,因此可以在超類中處理。登錄後,設備將需要由其模型的適當子類表示。
我設想實例化Device
超類的一個對象,登錄到設備以讀取模型,然後用相應子類的實例替換對象,如Device1
。我知道有可能在-init
方法中返回一個不同的對象,但我的問題是設備的通信可能很長,所以應該可以使用回調/代理來實現。
是否可以在-init
方法之後更改實例化對象的子類?還是有更簡單/更好的方法來實現我想要做的事情?
所以我會讓我的父'Device'類從'NSProxy'而不是'NSObject'繼承?您是否能夠以這種方式提供使用'NSProxy'的基本代碼示例? –
不,您的'NSProxy'的子類會創建基本上*假裝它們是'Device'子類的實例的實例。 Mike Ash在這裏有一篇出色的文章和示例代碼解決方案:http://www.mikeash.com/pyblog/friday-qa-2010-02-26-futures.html – jlehr
我對「NSProxy」進行了更深入的研究它看起來會適合我。謝謝你的幫助。現在我知道要尋找什麼。 –