在Xcode中使用不同的Frameworks
时,编译器和链接器有时不会在库中包含该Framework
。结果是在启动过程中立即崩溃,并显示以下消息:
dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications
Referenced from: /var/containers/Bundle/Application/1D41BD68-9B88-4D5D-B7AB-0D1C31979964/App.app/App
Reason: image not found
我找到了避免这种情况的一种方法。它只是像这样直接在应用程序代码中提到该库的各个部分:
UNNotificationRequest *unr = [UNNotificationRequest alloc];
仅使用#include <UserNotifications/UserNotifications.h>
包含来自该框架的文件并不能解决该问题。 @import UserNotifications;
对于不同的ios版本,我已经在不同的xcode版本上使用了不同的库。
以下是另外两个具有更具体用例的问题:
1)CABTMidiCentralViewController used in Storyboard only working if using code reference
2)Switching to Xcode 10 causes `UserNotifications.framekwor dyld: Library not loaded crash` for iOS9
有人知道为什么会这样吗?以及如何避免代码的笨拙部分却仍然链接/嵌入所需的框架?
Always Embed Swift Standard Libraries
设置为YES
Link Frameworks Automatically
设置为YES
UserNotifications
框架的问题:
使用模拟器:
使用真实设备:
当我将框架从Required
更改为Optional
时,它没有崩溃,但是推送通知不起作用。
答案 0 :(得分:0)
UserNotifications.framework是一个系统框架,要使用它,它必须存在于您的应用程序所运行的系统上。它是在最近才添加的,所以我想您会看到在早于框架存在的较旧版本的iOS上运行时,缺少该错误的错误。