回答:
モジュールのせいだと思う#import <Cocoa/Cocoa.h>
。
プレフィックスヘッダーに配置するコードを配置する場所については、プレフィックスヘッダーに配置するコードはありません。それらを必要とするファイルにインポートを置きます。定義を独自のファイルに入れます。マクロを置く...どこにも。他に方法がない場合(必要な場合など)を除いて、マクロの記述を停止します__FILE__
。マクロが必要な場合は、マクロをヘッダーに入れて含めます。
接頭辞ヘッダーは、巨大で、システム全体のほぼすべてで使用される(のようなFoundation.h
)場合に必要でした。巨大でユビキタスなものがあれば、アーキテクチャを再考する必要があります。プレフィックスヘッダーはコードの再利用を困難にし、リストされたファイルのいずれかが変更される可能性がある場合、微妙なビルドの問題を引き起こします。プレフィックスヘッダーによって劇的に改善されることを示すことができる深刻なビルド時の問題が発生するまで、これらを回避してください。
その場合、それを作成してclangに渡すことができますが、それが優れたアイデアであることは非常にまれです。
編集:すべてのView Controllerで使用するHUDに関する特定の質問には、はい、実際にそれを使用するすべてのView Controllerに絶対にインポートする必要があります。これにより、依存関係が明確になります。新しいプロジェクトでビューコントローラーを再利用すると(コントローラーを適切に構築する場合に一般的です)、必要なものがすぐにわかります。これはカテゴリにとって特に重要であり、暗黙的な場合、コードの再利用が非常に困難になる可能性があります。
PCHファイルは、依存関係の一覧表示を取り除くためのものではありません。あなたはまだインポートする必要がありますUIKit.h
かFoundation.h
必要に応じてXcodeのテンプレートがそうであるように、。PCHの理由は、(UIKitのように)非常に大規模なヘッダーを扱う場合のビルド時間を改善するためです。
TWAPIManager.m
たとえば、別のプロジェクトにをコピーしようとすると、TWALog()
定義されていないエラーが発生し、どこにあるかについてのヒントがありません。コードを共有しようとしているいくつかの大規模なプロジェクトで、まさにその問題に遭遇しました。これを作成TWAPILog.h
してインポートすると、簡単な開発コストでこれを解決できます。
それが適切かどうかの質問がなければ、手動でPCHファイルを追加できます。
新しいPCHファイルをプロジェクトに追加します:新規ファイル>その他> PCHファイル。
ターゲットのビルド設定オプションで、プレフィックスヘッダーの値をPCHファイル名に設定し、プロジェクト名をプレフィックスにします(つまり、という名前のプロジェクトとという名前のTestProject
PCHファイルMyPrefixHeaderFile
の場合、値TestProject/MyPrefixHeaderFile.pch
をplistに追加します)。
ヒント:$(SRCROOT)
またはなど$(PROJECT_DIR)
を使用.pch
して、プロジェクト内のを配置するパスに到達できます。
ターゲットのビルド設定オプションで、値を設定しますプリコンパイルプレフィックスヘッダをしますYES
。
独自のPCHファイルを作成する必要があります
追加New file -> Other-> PCH file
次に、このPCHファイルのパスをビルドに追加します setting->prefix header->path
($(SRCROOT)/ファイル名.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
.pchファイルを手動で追加することを決定し、xCode 6の前と同じようにObjective-Cを使用する場合は、UIKitおよびFoundationフレームワークを.pchファイルにインポートする必要もあります。それ以外の場合は、これらのフレームワークを各ヘッダーファイルに手動でインポートする必要があります。使用する言語をテストするので、とにかく次のコードを追加できます。
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
新しいPCHファイルを追加するには、次の手順に従います。
(1)新しいファイルを追加-iOSを選択-その他とPCHファイル
(2)このPCHファイルのパスをプロジェクトに追加します-BuildSetting-Apple LLVM 6.0 Language
Add PrefixヘッダーパスYourApplicationName(root-path)/filename.pchを追加