私は、アプリ、一連のカスタムフレームワーク、および一連のサードパーティフレームワークで構成されるiOSアプリを持っています。
App
MyFramework1
MyFramework2
AFNetworking.framework
Mantle.framework
..
次の構造で「フレームワークモジュール内に非モジュラーヘッダーを含める」というエラーが発生します。
App/AppDelegate.m
#import <MyFramework2/MyFramework2.h>
MyFramework2/MyFramework2.h
#import "MyClass.h"
MyClass.h
#import <Mantle/Mantle.h> <-- Error happens here
MyFramework2はそれ自体でビルドします。
Appをビルドしようとすると、Mantleをインポートする行に「フレームワークモジュール内に非モジュラーヘッダーが含まれています」というエラーが表示されて失敗します.h。
この問題は、Mantle.hを.m
ファイルにインポートすると解消されますが、クラスがMantleで定義されているMTLModel
を継承しているため、インポートできません。
この問題は解決されました ここ ですが、Swift固有ではありません。
(1)すべてのカスタムフレームワークヘッダーが公開されていることを確認してください。彼らです。 (2)[ターゲット]の下の[ビルド設定]に移動し、[フレームワークモジュールに非モジュラーインクルードを許可する]をYES
に設定します。
なぜこれが起こっているのか、そしてそれを修正する方法を誰かが知っていますか? 「フレームワークモジュールへの非モジュラーインクルードを許可する」を「はい」に設定することは良い習慣と見なされますか?なぜこれがエラーなのですか?
ありがとう。