B的子類是A的C子類是A的子類,當我創建CI做if((self = [NSKeyedUnarchiver unarchiveObjectWithFile:…])) { }
的.M裏面C.的Objective-C:強制類是其他
所以儘管我設置在Ch中的超類是B(這是我想要的),當我從unarchiveObjectWithFile:
創建C對象時,因爲這個對象是A的子類,我不能強制它成爲B的子類。(很難解釋對不起) 。
是否有任何解決方法???換句話說:當我有一個屬於A類的對象,並且我有另一個B類作爲A的子類時,那麼unarchiveObjectWithFile:
可以成爲B的子類嗎? (至極被允許因爲B的子類)
閱讀上面 – Godfather
評論@ user588125 - 這聽起來像你有這些情況下,您可以安全地更改類之一,如果這樣去做,隨着運行時間的功能。你也可以考慮使用一個可用於替換方法的類別(而不是覆蓋它們) - 再次注意一個區域。 – CRD
兩個註釋1:object_setClass不會在我的環境中退出,我不能在沒有錯誤的情況下鍵入它,我只是得到object_getClassName(id obj),但_setClass不存在。 2:這個解決方案不適合我。在這裏,我粘貼什麼問題是http://pastebin.com/M1aGZ7S3。我有一個SKEmitterNode,我使用XCode Buildin工具創建,所以當我解壓縮它時,我得到一個SKEmitterNode(A),但是我的所有SKEmitterNode的解壓有一些屬性和其他東西他們分享,所以我創建了一個發射器:SKSpriteNode(B )共享該功能,最後我創建Smoke:Emitter(C)並且執行[[C alloc] init] – Godfather