2
我在框架'X'中有一個類文件,類文件使用框架'Y'的方法。有沒有什麼辦法可以在運行期間框架'Y'不存在時使類文件可選,這樣在編譯框架'X'且沒有框架'Y'的項目期間,它不應該在xcode項目中拋出任何編譯錯誤。如何使基於框架的Objective-C類可選加載?
我在框架'X'中有一個類文件,類文件使用框架'Y'的方法。有沒有什麼辦法可以在運行期間框架'Y'不存在時使類文件可選,這樣在編譯框架'X'且沒有框架'Y'的項目期間,它不應該在xcode項目中拋出任何編譯錯誤。如何使基於框架的Objective-C類可選加載?
是的,不要通過直接傳遞消息給它們來靜態加載框架Y的類對象。
假設框架Y的類別爲YYYClass
。當您在框架X中引用YYYClass
時,通常會執行以下操作。
YYYClass *instance = [[YYYClass alloc] init];
呼叫到[YYYClass alloc]
被傳遞消息到YYYClass
。現在鏈接器需要YYYClass
可用。
但是做一些有點不同的事情。
YYYClass *instance = [[NSClassFromString(@"YYYClass") alloc] init];
現在,框架Y的類對象被動態加載,因此鏈接器不需要該類可用。
如果框架Y不在最終二進制文件中,則NSClassFromString(@"YYYClass")
返回Nil
(nil
的類版本)。 [Nil alloc]
返回nil
和[nil init]
返回nil
。
最終效果是框架Y的所有類的實例將是nil
。你需要預期這種行爲並處理它。