iOS模拟器崩溃,设备没有(dyld:未找到符号)

时间:2016-07-07 17:43:41

标签: ios swift frameworks crash ios-simulator

我花了一些时间来解决这个问题,所以我想如果有人搜索过它,他们也可以在这里找到解决方案。

当我有一个名为CoreUI的框架时,问题就出现了。这在我的iPhone和iPad上工作正常,但它在模拟器上崩溃,并向终端发送以下错误

dyld: Symbol not found: _OBJC_CLASS_$_CUICatalog
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/UIKit
Expected in: /Users/sareninden/Library/Developer/Xcode/DerivedData/Treinplanner-bcfwuvntuwetsmavibxtvaiczpfg/Build/Products/Debug-iphonesimulator/CoreUI.framework/CoreUI
 in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/UIKit

在查看了所有构建设置并找不到任何内容后,我尝试使用名为CoreUI的框架创建一个空项目。如果没有添加任何逻辑,它会因同样的错误而崩溃。

似乎在模拟器中CoreUI也是Apple使用的框架名称。尽管这只是一个快速的框架,但仍会引发冲突。

2 个答案:

答案 0 :(得分:1)

解决方案是不使用Apple使用的模块名称(适用于您的应用或框架)。我在这里找到了一个框架列表(https://github.com/jonathanpenn/ui-auto-monkey/issues/8)。我不知道它是否完整,但这是一个好的开始。

答案 1 :(得分:1)

这是DYLD_FRAMEWORK_PATH的工作原理。因为您的DYLD_FRAMEWORK_PATH中有自己的CoreUI.framework,所以使用那个来代替系统,以满足UIKit.framework的链接。

不要选择系统框架使用的框架名称,即:

ls $(xcrun --sdk iphonesimulator --show-sdk-path)/ System / Library / * Frameworks