iOS 11 模拟器 dyld:未找到符号:_CKAccountChangedNotification

iOS 11 simulator dyld: Symbol not found: _CKAccountChangedNotification

有人知道我的 iOS 11 模拟器发生了什么事吗?当我在 iOS 11 上启动时,该应用程序无法运行,并在控制台中显示:

dyld: Symbol not found: _CKAccountChangedNotification

Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet

Expected in: /Users/steve/Library/Developer/Xcode/DerivedData/Cloud-bvzzwfgkjzfnzibxrwadbayiowcu/Build/Products/Debug-iphonesimulator/CloudKit.framework/CloudKit in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet"

但是在 iOS 10 模拟器或带有 iOS 11 的设备上 运行 时一切正常。我该如何解决这个问题?提前致谢!

CloudKit 是一个系统框架,因此您的框架正在干扰其他试图在真实 CloudKit.framework

中找到符号的系统框架

发生这种情况是因为模拟器当前不使用 dyld 共享缓存(否则符号已经解析为系统提供的CloudKit.frameworkXcode 将 DYLD_FRAMEWORK_PATH 设置为指向构建的产品目录,这样它就可以找到您的框架,即使它们没有打包在最终安装位置。

这两个组合导致 dyld 在尝试解析 _CKAccountChangedNotification.

时看到您的 CloudKit.framework 版本

解决方案是重命名您的框架。