我花了一些时间解决这个问题,所以我想如果有人搜索过它,他们也会在这里找到解决方案。
当我有一个名为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)/系统/库/ *框架