我有一个具有以下层次结构的工作区
* App Project (uses Framework A & Framework B)
* 'Cocoa Framework A' Project
- contains 'sub-framework B'
'App Project'和'Framework A'都使用子框架B. 当我将子框架B添加到'框架A'链接的框架时,它编译得很好但是在编译'App Project'时我得到链接器错误(它找不到子框架B符号)。
然而,当我在“App Project”中向链接框架添加“子框架B”时,一切都编译得很好,但是当应用程序完成启动时,我会在控制台中看到警告:
objc [53023]:类AWSS3PutBucketLifecycleConfigurationRequest是 在两者中实施 [path-to-Derived-Data] /FrameworkA.framework/FrameworkA和 [路径到模拟器束] /App.app/Aoo。
将使用其中一个。哪一个未定义。
我失去了理智,因为我找不到任何解决方法。 显然,我需要''子框架B''在编译结束时只链接一次。 你能给我一些如何解决这个问题的技巧吗?
我正在附加描述问题的示例项目: https://dl.dropboxusercontent.com/u/24532134/Example.zip
只需编译它并在控制台中查看警告。
答案 0 :(得分:0)
警告你得到的并不是很大 - 只要你确定,FrameworkA和应用程序都使用相同版本的子框架,它就不会成为问题。但是,作为一名优秀的开发人员,您应该担心这样的警告。
我可以向您提出建议 - 从应用程序中删除FrameworkB依赖项,并将其标题包含在FrameworkA的伞形标题中。这样,无论何时链接FrameworkA,您都会自动链接FrameworkB,并且您可以通过包含FrameworkA伞标题来访问它的功能声明
这是您按照我描述的方式设置的示例