2016-08-24 62 views
2

我在框架'X'中有一個類文件,類文件使用框架'Y'的方法。有沒有什麼辦法可以在運行期間框架'Y'不存在時使類文件可選,這樣在編譯框架'X'且沒有框架'Y'的項目期間,它不應該在xcode項目中拋出任何編譯錯誤。如何使基於框架的Objective-C類可選加載?

回答

2

是的,不要通過直接傳遞消息給它們來靜態加載框架Y的類對象。

假設框架Y的類別爲YYYClass。當您在框架X中引用YYYClass時,通常會執行以下操作。

YYYClass *instance = [[YYYClass alloc] init]; 

呼叫到[YYYClass alloc]被傳遞消息到YYYClass。現在鏈接器需要YYYClass可用。

但是做一些有點不同的事情。

YYYClass *instance = [[NSClassFromString(@"YYYClass") alloc] init]; 

現在,框架Y的類對象被動態加載,因此鏈接器不需要該類可用。

如果框架Y不在最終二進制文件中,則NSClassFromString(@"YYYClass")返回Nilnil的類版本)。 [Nil alloc]返回nil[nil init]返回nil

最終效果是框架Y的所有類的實例將是nil。你需要預期這種行爲並處理它。

相關問題