12
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Xcode6でPCHファイルを追加する方法

Last updated at Posted at 2015-01-02

Xcode6の時代に入り、Objective-Cでプロジェクトを新規するとき、PCHファイルは自動的に生成しないようになりました。従来の習慣はプロジェクトの共通の機能と定義などは普段PCHファイルに書き込みます。今もその便利さを利用したい。

直接にPCHファイルを新規するだけは足りません。プロジェクトの設定にも書き込むが必要です。以下の通り、方法は簡単です。

  1. そのプロジェクトに、PCHファイルを新規して添付します。
  2. ターゲットの設定に、言語のカテゴリを見つけよう。Target -> Build Settings -> Apple LLVM 6.0 - Language
  3. そこで、Precompile Prefix HeaderYES に変えよう。
  4. またその下の Prefix Header$(SRCROOT)/FILENAME.pchのようにしましょう。

設定は終了で、プロジェクトを保存して、クリーンします。今なら、PCHファイルは稼働できますようになります。

さて、PCHファイルを使ってみて。

例えば、私の愛用の日誌関数の再定義コード。

#ifdef DEBUG
#define _Log(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define _Log(...)
#endif

// ALog always displays output regardless of the DEBUG alarm
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

その後はそれを使うことです。


20150328の追加です。

iOSでzipファイルを用いる場合、ZipArchiveなどを引用し、プロジェクトにc言語のコードを含むことがあります。その時にそのままのPCHファイルは、NSObjCRuntimeなどのクラスでよく分からないエーラーが出てきます。それは多分、cファイルの前にFoundation/Foundation.hなどを導入したせいかもしれません。その解決策として、Foundation/Foundation.hなどを含むクラスをPCHファイルにインポートするには、直接にインポートすることではなく、必ず#ifdef __OBJC__#endifの中に入れます。

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?