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

当我有一个名为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

浏览完所有构 build 置后,一无所获,我尝试使用名为CoreUI的框架制作一个空项目。没有添加任何逻辑,它就会崩溃,并显示相同的错误。

在模拟器中,CoreUI似乎也是Apple使用的框架名称。即使这只是一个快速的框架,它仍然会引起冲突。

最佳答案

这就是DYLD_FRAMEWORK_PATH的工作方式。因为您在DYLD_FRAMEWORK_PATH中拥有自己的CoreUI.framework,所以使用该代码代替系统代码来满足UIKit.framework的链接。

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

ls $(xcrun --sdk iphonesimulator --show-sdk-path)/系统/库/ *框架

07-24 09:44