Если UIKit импортируется в файл PCH, то почему он снова импортируется в каждый файл?

Если #import <UIKit/UIKit.h> а также #import <Foundation/Foundation.h> оба находятся в нашем файле `ProjectName.pch', что делает их глобально импортированными, почему они автоматически добавляются в заголовочный файл, когда XCode создает новый класс?

2 ответа

Решение

.Pch существует как оптимизация времени компиляции, лично я рекомендую убедиться, что классы могут по-прежнему создаваться без pch (поэтому все равно импортировать в h/m вручную), чтобы он мог A) строить без и B), так что если вы повторно использовать код, вы можете легко увидеть его зависимости.

В общем, недавно созданные проекты iOS поставляются с этой функциональностью, которая называется предварительно скомпилированным заголовком или префиксным заголовком и представляет собой файл с расширением.pch.

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

Использование предварительно скомпилированного заголовка может или не может увеличить время компиляции; в общем, это сокращает время компиляции, если у вас много общих заголовков и / или много исходных файлов.

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

Только Apple знает наверняка.

Наилучшее предположение: Apple не может быть уверена, что импорт находится в файле pch для всех проектов или что существует даже файл pch. Это благодаря неявной компиляции импорта может быть гарантировано.

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