私の Swift/iOS9 フレームワーク「viewer_protocol」は、別の外部の Objective-C フレームワーク ( CocoaAsyncSocket ) を使用します。Carthage を使用して CocoaAsyncSocket を構築しています。これまでのところ、すべて正常に動作しています。フレームワーク Xcode プロジェクト内に問題なくフレームワークを使用するサンプル アプリがあります。
Carthage を使用していますが、フレームワークを別の Xcode プロジェクトで使用したいと考えています。フレームワークのみを依存関係として含めると、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 ステートメントを
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
に
#import "CocoaAsyncSocket/CocoaAsyncSocket.h"
これで、Xcode がヘッダー ファイルを見つけ、警告が消えます。