- 一個應用目標項目鏈接到嵌入式框架:
MyApp
- 一個嵌入式框架目標:
MyKit.framework
- 一個應用程序擴展目標:
MyExtension
我想使用的MyKit
共享代碼的MyExtension
但是當我聯繫,我得到警告
ld: warning: linking against a dylib which is not safe for use in application extensions: /Users/me/Library/Developer/Xcode/DerivedData/MyApp-dnztzmxjghjlsteetlokzhjtjqkm/Build/Products/Debug-iphonesimulator/MyKit.framework/MyKit
要配置一個應用程序擴展目標使用嵌入式框架,設置目標的「僅需要應用程序擴展安全API」構建設置爲是。如果你不這樣做,Xcode會提醒你這樣做,通過顯示警告「鏈接到dylib不安全以用於應用程序擴展」。
默認情況下設置正確。我通過將「僅需要應用程序擴展安全API」設置爲NO,可以通過擺脫警告,但這可能會導致一些應用程序拒絕。
該框架在應用程序擴展中不使用任何API not allowed。事實上,在示例項目中,您會看到MyKit.framework
只會將消息記錄到控制檯。
從應用程序擴展中鏈接到嵌入式框架以避免這種情況的正確方法是什麼?
Ahh我必須在框架*中設置「僅需要應用程序擴展安全API」*而不是在擴展中!順便說一句,我不得不使用其他應用程序之間實際共享的框架。我上面的場景只是爲了簡化問題 – Jan
是的。該錯誤告訴您,您正在使用可能使用不受支持的API調用的框架。如果您嘗試在您的框架中使用不受支持的API(例如'UIApplication'),編譯器會給您一個錯誤,從而向客戶端保證它是保存到的,所以使用''只需要App-擴展 - 安全API'= YES'在擴展中使用框架。 – shallowThought
好吧。謝謝! – Jan