【发布时间】:2015-12-31 15:02:51
【问题描述】:
我的 Swift / iOS9 框架“viewer_protocol”使用另一个外部 Objective-C 框架 (CocoaAsyncSocket)。我正在使用 Carthage 构建 CocoaAsyncSocket。到目前为止一切正常:在我的框架 Xcode 项目中有一个示例应用程序,使用我的框架没有任何问题。
现在我想在不同的 Xcode 项目中使用我的框架 - 尽管使用 Carthage。我只包含我的框架作为依赖项,Carthage 自动将依赖项解析为 CocoaAsyncSocket。我将这两个框架都嵌入了这个新的 Xcode 项目并构建了我的应用程序:这里一切正常 - 除了一个我无法摆脱的警告:
/Users/John/Repositories/my_project/<module-includes>:1:1:
Umbrella header for module 'my_project' does not include header 'GCDAsyncSocket.h'
这是我的框架标题:
#import <UIKit/UIKit.h>
//! Project version number for my_project.
FOUNDATION_EXPORT double my_projectVersionNumber;
//! Project version string for my_project.
FOUNDATION_EXPORT const unsigned char my_projectVersionString[];
// In this header, you should import all the public headers of your framework
using statements like #import <my_project/PublicHeader.h>
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
如您所见,CocoaAsyncSocket.h 已导入。此外,在我的框架内,包含了 CocoaAsyncSocket.h 文件:
我在这里缺少什么?我在我的框架中使用了其他几个外部框架,它们没有任何警告 - 所有这些外部框架都是用 Swift 编写的 - CocoaAsyncSocket 是纯 Objective-C。
这是我的框架 module.modulemap:
framework module my_project {
umbrella header "my_project.h"
export *
module * { export * }
}
module viewer_protocol.Swift {
header "my_project-Swift.h"
}
更新
我找到了解决方案:从
更改我的框架标题中的导入语句#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
到
#import "CocoaAsyncSocket/CocoaAsyncSocket.h"
现在 Xcode 找到了头文件,警告消失了。
【问题讨论】:
标签: objective-c xcode swift frameworks carthage