Выбор файла PCH

Вы пытаетесь использовать предварительно скомпилированные заголовки, чтобы "ускорить компиляцию". Xcode имеет файл с именем YourProject_Prefix.pch, Вы можете добавить туда любое количество заголовочных файлов.

Мой вопрос, как вы выбираете, какие заголовочные файлы должны быть в вашем PCH? Стоит ли просто выбросить туда все свои заголовочные файлы, или это на самом деле не будет оптимальным?

2 ответа

Просто импортируйте ваши файлы заголовков, как показано ниже.

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import "YourHeaderFile.h"
#endif

Предварительно скомпилированные заголовки, особенно при сборке приложения, могут быть очень полезны. Заголовки в файле.pch компилируются только в первый раз и только в том случае, если заголовки изменятся в будущем. Если ваше приложение импортирует много фреймворков / заголовков, которые не меняются; это может ускорить сборку (компиляцию), так как компилятор будет использовать.pch против компиляции каждого импортированного фреймворка / класса при каждой компиляции.

файл pch будет включен во все ваши исходные файлы по умолчанию.

это означает, что вы должны размещать там только заголовочные файлы, которые являются более или менее глобальными или никогда не меняются. Я считаю, что размещение всех ваших заголовков замедлит компиляцию, потому что каждый раз, когда вы меняете один заголовок, это приводит к перекомпиляции каждого файла в вашем проекте. (Я не проверял и не исследовал это)

Вот пример из одного из моих проектов:

#ifdef __OBJC__
    #import <Cocoa/Cocoa.h>
    #import "Errors.h"
    #import "Localization.h"
    #import "Logging.h"
#endif

Кроме того, возьмите связанные комментарии о C++ с частичкой соли. C++ использует шаблоны и тому подобное, которые идут в заголовочные файлы и заставляют компиляцию занимать намного больше времени, чем вы увидите в target-c. в target-c вы, скорее всего, имеете только типы и интерфейсы, а не реализацию в заголовке.

Другие вопросы по тегам