hib*_*nto 48 xcode frameworks objective-c swift carthage
我的Swift/iOS9框架'viewer_protocol'使用另一个外部Objective-C框架(CocoaAsyncSocket).我正在使用Carthage构建CocoaAsyncSocket.到目前为止一切正常:在我的框架Xcode项目中有一个示例App使用我的框架没有任何问题.
现在我想在不同的Xcode项目中使用我的框架 - 尽管使用了Carthage.我只将我的Framework作为依赖项包含在内,而Carthage会自动将依赖项解析为CocoaAsyncSocket.我将这两个框架嵌入到这个新的Xcode项目中并构建我的应用程序:这里的一切正常 - 除了一个警告我无法摆脱:
/Users/hibento/Repositories/viewer_protocol/<module-includes>:1:1:
Umbrella header for module 'viewer_protocol' does not include header 'GCDAsyncSocket.h'
Run Code Online (Sandbox Code Playgroud)
这是我的框架标题:
#import <UIKit/UIKit.h>
//! Project version number for viewer_protocol.
FOUNDATION_EXPORT double viewer_protocolVersionNumber;
//! Project version string for viewer_protocol.
FOUNDATION_EXPORT const unsigned char viewer_protocolVersionString[];
// In this header, you should import all the public headers of your framework
using statements like #import <viewer_protocol/PublicHeader.h>
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
Run Code Online (Sandbox Code Playgroud)
如您所见,导入了CocoaAsyncSocket.h.此外,在我的框架内包含CocoaAsyncSocket.h文件:
我在这里缺少什么?我在我的框架中使用了其他几个外部框架,没有任何警告 - 所有这些外部框架都是用Swift编写的 - CocoaAsyncSocket是纯Objective-C.
这是我的框架module.modulemap:
framework module viewer_protocol {
umbrella header "viewer_protocol.h"
export *
module * { export * }
}
module viewer_protocol.Swift {
header "viewer_protocol-Swift.h"
}
Run Code Online (Sandbox Code Playgroud)
更新
我找到了一个解决方案:更改我的框架头中的import语句
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
Run Code Online (Sandbox Code Playgroud)
至
#import "CocoaAsyncSocket/CocoaAsyncSocket.h"
Run Code Online (Sandbox Code Playgroud)
现在Xcode找到头文件,警告消失.
swi*_*Boy 25
我今天遇到了同样的问题
问题是
模块' HockeySDK '的Umbrella标头不包含标题' BITHockeyBaseViewController.h '
而解决方案是
1.构建并运行项目和go-to Report Navigator
2.查看警告,单击以展开详细信息
它将使您需要进行更改的文件名,如下面的屏幕截图所示
所以我刚刚在AppDelegate.m文件中更新了我的import语句
新
#import "HockeySDK/HockeySDK.h"
Run Code Online (Sandbox Code Playgroud)
旧
#import <HockeySDK/HockeySDK.h>
Run Code Online (Sandbox Code Playgroud)
问题消失了..
希望这会对某人有所帮助.谁来这里寻求解决方案.
Ode*_*gev 14
对我来说,解决方案如下:
1)每个Objective C框架都有1个头文件,其中包含以下所有内容:
#import ...
#import ...
#import ...
Run Code Online (Sandbox Code Playgroud)
2)确保此文件导入缺少的标头.
3)再次构建项目,它应该删除警告.
或者,您可能在Public框架的构建阶段区域中公开了应该实际移回该Project区域的文件.
如果您不希望这些文件位于框架的标题内,以便可以公开访问,那么您可以将其还原.
转到框架 - >目标 - >构建阶段并拖动以将不必要的头文件从Public移动到Project.

| 归档时间: |
|
| 查看次数: |
28712 次 |
| 最近记录: |