Почему ProjectName-Prefix.pch не создается автоматически в Xcode 6?

Почему нет ProjectName-Prefix.pch создается автоматически в Xcode 6?

Заголовок прекомпиляции больше не нужен?

Где я должен написать код, который был в ProjectName-Prefix.pch до?

8 ответов

Решение

Я подозреваю, из-за модулей, которые устраняют необходимость в #import <Cocoa/Cocoa.h>,

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

Заголовок префикса был необходим для вещей, которые огромны и используются почти всем во всей системе (например, Foundation.h). Если у вас есть что-то такое огромное и вездесущее, вы должны переосмыслить свою архитектуру. Заголовки префиксов затрудняют повторное использование кода и создают небольшие проблемы со сборкой, если любой из перечисленных файлов может измениться. Избегайте их до тех пор, пока у вас не возникнет серьезная проблема со временем сборки, которая, как вы можете продемонстрировать, значительно улучшится с помощью префиксного заголовка.

В этом случае вы можете создать его и передать в Clang, но это очень редко, что это хорошая идея.


РЕДАКТИРОВАТЬ: На ваш конкретный вопрос о HUD, который вы используете во всех ваших контроллерах представления, да, вы должны абсолютно импортировать его в каждый контроллер представления, который фактически использует его. Это проясняет зависимости. Когда вы повторно используете свой контроллер представления в новом проекте (что часто случается, если вы хорошо строите свои контроллеры), вы сразу же узнаете, для чего он нужен. Это особенно важно для категорий, которые могут затруднить повторное использование кода, если он неявный.

Файл PCH не предназначен для того, чтобы избавиться от списка зависимостей. Вы все еще должны импортировать UIKit.h или же Foundation.h по мере необходимости, как это делают шаблоны Xcode. Причиной использования PCH является увеличение времени сборки при работе с действительно большими заголовками (как в UIKit).

Без вопроса, правильно это или нет, вы можете добавить файл PCH вручную:

  1. Добавить новый файл PCH в проект: Новый файл> Другое> Файл PCH.

  2. В параметре " Настройки сборки" Target задайте в качестве значения заголовка префикса имя файла PCH с префиксом имени проекта (т. Е. Для проекта с именем TestProject и файл PCH с именем MyPrefixHeaderFileдобавить значение TestProject/MyPrefixHeaderFile.pch к списку).

    СОВЕТ: Вы можете использовать такие вещи, как $(SRCROOT) или же $(PROJECT_DIR) чтобы попасть на путь, где вы положили .pch в проекте.

  3. В параметре " Настройки сборки" объекта Target установите значение заголовка прекомпиляции префикса равным YES,

Вам нужно создать собственный файл PCH
добавлять New file -> Other-> PCH file

Затем добавьте путь к этому файлу PCH в вашу сборку setting->prefix header->path

($(SRCROOT)/filename.pch)

введите описание изображения здесь

Я покажу вам фото!

  1. Добавить новый файлДобавить новый файл

  2. Зайдите в Проект / Настройка сборки /APPl LLVM 6.0-LanguageДобавить новый файл

Добавить.pch file-

1) Добавить новый файл.pch в ваш проект-> Новый файл-> Другой->PCH-файл

2) Перейти к настройке сборки вашего проекта.

3) Поиск "префикс заголовка". Вы можете найти это под Apple LLVM.

4) Вставьте это в поле $(SRCROOT)/yourPrefixHeaderFileName.pch

5) Очистить и построить проект. Это оно!!!

Если вы решили добавить файл.pch вручную и хотите использовать Objective-C так же, как и до xCode 6, вам также придется импортировать UIKit и Foundation-фреймворки в файл.pch. В противном случае вам придется импортировать эти фреймворки вручную в каждый заголовочный файл. Вы можете добавить следующий код, так как он проверяет используемый язык:

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

Используйте:

$ (PROJECT_DIR) / Название проекта /PrefixHeader.pch

Для добавления нового файла PCH выполните следующие шаги:

(1) Добавить новый fiew - Выбрать iOS - Другой и PCH файл

(2) добавить путь к этому файлу PCH в свой проект - BuildSetting - Apple LLVM 6.0 Language

Добавить заданный префикс заголовка пути YourApplicationName(root-path)/filename.pch

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