Насколько я понимаю, содержимое этого файла имеет префикс перед каждым файлом исходного кода перед компиляцией
Это в принципе правильно, но вы должны понимать тонкие моменты: каждая компиляция из Xcode в конечном итоге сводится к вызову gcc
или clang
. Что делает XCode, так это сначала компилирует файл X.pch
:
clang -x X.pch -o X.pch.gch
и затем, когда отдельный исходный файл (скажем, a.m
) скомпилирован, он выдает
clang -include X.pch a.m -o a.o
, который загружает файл pch
, вызывая использование предварительно скомпилированного заголовка. Таким образом, с точки зрения компилятора , на самом деле содержимое файла pch
не имеет префикса автоматически. Скорее, Xcode добавляет префикс скомпилированного заголовка к файлу, когда он вызывает компилятор.
Будущая версия XCode может просто перестать это делать. Поэтому лучше хранить #import
s в ваших .m
или .h
файлах.
Вы также можете думать об этом так: использование файла pch
- это то, что Xcode делает для нас за кулисами, чтобы ускорить процесс компиляции. Поэтому мы не должны писать коды так, как это существенно зависит от них, например, не импортировать файл UIKit.h
из наших файлов .m
/ .h
.
(Кроме того, мне кажется, что синтаксическая раскраска XCode4 запутается, если вы неправильно импортируете соответствующие заголовочные файлы из файлов .h
и .m
.)