web-dev-qa-db-ja.com

XCode6:エラー「フレームワークモジュール内に非モジュラーヘッダーが含まれています」を受信して​​います

私は、アプリ、一連のカスタムフレームワーク、および一連のサードパーティフレームワークで構成される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に設定します。

なぜこれが起こっているのか、そしてそれを修正する方法を誰かが知っていますか? 「フレームワークモジュールへの非モジュラーインクルードを許可する」を「はい」に設定することは良い習慣と見なされますか?なぜこれがエラーなのですか?

ありがとう。

14
bcattle

プロジェクトナビゲータで.hファイルを選択します。右側のターゲットメンバーシップエリアでは、ターゲットの横にドロップダウンメニューがあります。そこで「公開」を選択します(おそらく「プロジェクト」が現在選択されています)。

enter image description here

15
Nikos M.