我在我创建的自定义框架中使用coreLocationframework,在将框架集成到我的项目后,运行应用程序后出现以下错误
架构i386的未定义符号: “_OBJC_CLASS _ $ _ CLLocationManager”,引自: MYFramework中的objc-class-ref “_kCLLocationAccuracyBest”,引自: - MYFramework中的[Utility getCurrentLocation] ld:找不到架构i386的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
之后我在MY项目中添加了相同的corelocationframework,然后错误就是代码无法正常工作。
所以我想知道这背后的原因是什么,如果我还添加了其他框架,它会发生什么?
答案 0 :(得分:2)
框架的核心是一个静态库,其中包含框架中的所有代码。当您引用iOS SDK中的任何核心框架时,它们会动态链接到您的项目。因此,您在框架项目中引用的任何核心框架也需要在与您的框架链接的应用程序中引用。
答案 1 :(得分:2)
每当您构建依赖于另一个框架的静态库或框架时,您都必须将该框架链接到您的框架并进入最终项目。
如果您要在某个地方发布此框架供其他人使用,您应该说明在安装框架后,他们还必须链接CoreLocation
。
示例:
MyFramework
--> Frameworks
--> CoreLocation.framework
MyApp
--> Frameworks
--> MyFramework.framework
--> CoreLocation.framework