我创建了一个自定义的Objective-C框架。我想将其导入到任何给定的iOS项目中,并在iOS模拟器和实际设备上使用它提供的功能。要导入框架,我使用应用程序目标中的Build Phases > Link Binary With Libraries设置进行链接。然后,我可以使用以下语句在我的类之一中导入它:
#import <CustomFramework/CustomFramework.h>
我可以成功实例化框架中的类,但是当我试图在设备上运行我的项目时,出现以下错误消息:
dyld: Library not loaded: @rpath/CustomFramework.framework/CustomFramework
Referenced from: /var/mobile/Applications/A61E882D-481A-4C0B-B4FD-69F5D24968BF/TestApp.app/TestApp
Reason: image not found
如果我尝试在模拟器上运行它,就会收到不同的错误消息:
ld: warning: ignoring file /Users/user/Desktop/CustomFramework.framework/CustomFramework, missing required architecture i386 in file /Users/user/Desktop/CustomFramework.framework/CustomFramework (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CustomFramework", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
当我从框架中实例化一个类时,就会出现这种情况。如果我导入了框架但实际上没有使用它,我的应用程序可以成功构建。但是每当我从框架实例化一个类时,它就会出错。
为了让应用程序在设备上构建,我遵循了此 SO答案。我添加了一个新的“复制文件”阶段到目标的构建阶段设置中,将目的地设置为框架,并添加了我的框架。这样做非常好;但是,我也想在iOS模拟器上测试我的应用程序。当我尝试在模拟器上运行我的应用程序时,仍然会出现“缺少所需的架构i386”的错误。我已经尝试了几乎所有相关的SO主题提出的解决方案,但没有任何帮助我解决这个问题。请注意,我正在尝试在新的Xcode项目中使用自定义框架,因此应用程序/构建设置都没有更改其默认值。如何修复此错误,以便我可以在包含我的框架的项目上同时在iOS模拟器和设备上运行我的应用程序?任何见解都将不胜感激!