Как изменился глобальный импорт файлов в Xcode 6/iOS 8?

Я использовал свой глобальный импорт (т.е. импорт, который будет виден всем исходным файлам в моем проекте Xcode) в файле AppName-prefix.pch.

Однако теперь, в среде Xcode 6 (и iOS 8), после создания нового проекта, этот файл не генерируется автоматически.

Мой вопрос в том, как правильно делать глобальный импорт в Xcode 6? Могу ли я просто создать свой собственный AppName-prefix.pch и использовать его в конечном итоге?

Примечание. При использовании Cocoapods создается файл с именем Pods-AppName-Bolts-prefix.pch. Но глобальный импорт не будет работать с этим.

Ответ 1

Apple наконец поняла, что наличие глобальной зависимости - очень плохая практика. В идеале вам нужно прекратить использование файлов PCH, потому что это делает другие файлы очень грязными и прерывает повторное использование кода.

В любом случае, вот решение

  • Добавить новый файл PCH в проект - Новый файл > Другое > PCH файл

  • В опции "Настройки сборки" проекта задайте значение "Заголовок префикса" в имени вашего PCH файла, с именем проекта в качестве префикса - то есть для проекта с именем "TestProject" и файла PCH с именем "MyPrefixHeaderFile", добавьте значение "TestProject/MyPrefixHeaderFile.pch" в plist.

Ответ 2

Вы можете создать свой собственный, но дело в том, что у вас не должно быть глобальных зависимостей, вы должны явно импортировать только то, что требуется в каждом классе. В самом деле, в ваших файлах .h вы должны попытаться использовать @class для всего и импортировать только в ваш .m файл. Этот подход делает очевидные зависимости класса и уменьшает вероятность кругов зависимости, которые являются очень хорошими.

Ответ 3

В Xcode 6 проект .pch файл больше не генерируется автоматически, но если вы хотите его, вы можете сами создать файл .pch. Сделайте это, как показано ниже:

Goto->File->New->File->(Under iOS)Other->PCH File->Next

После ввода имени файла и его сохранения перейдите в "Настройки сборки" и установите значение "prefix header" в качестве "YourProjectName/YourPCHFileName.pch". И если для заголовка "Precompile Prefix" установлено значение "Нет", измените его на "Да". Теперь вы можете поместить любой файл, который хотите импортировать по всему миру, но держать все здесь не является хорошей практикой.