Відповіді:
Я підозрюю, що через модулі, які усувають потребу в #import <Cocoa/Cocoa.h>
.
Щодо того, куди слід поставити код, який ви б помістили в заголовок префікса, немає коду, який слід помістити в заголовок префікса. Помістіть свій імпорт у потрібні файли. Покладіть свої визначення у власні файли. Покладіть макроси ... нікуди. Не припиняйте писати макроси, якщо немає іншого способу (наприклад, коли вам потрібно __FILE__
). Якщо вам потрібні макроси, покладіть їх у заголовок і включіть його.
Заголовок префікса був необхідний для величезних речей, які використовуються майже всім у всій системі (як Foundation.h
). Якщо у вас є щось таке величезне і всюдисуще, ви повинні переосмислити свою архітектуру. Префіксні заголовки ускладнюють повторне використання коду та вводять тонкі проблеми в збірці, якщо будь-який із перелічених файлів може змінитися. Уникайте їх, поки у вас не виникне серйозна проблема з часом складання, яку ви зможете продемонструвати, значно покращившись із заголовком префікса.
У такому випадку ви можете створити його і передати його в кланг, але це надзвичайно рідко, що це гарна ідея.
РЕДАКТУВАННЯ: До вашого конкретного запитання щодо HUD, який ви використовуєте у всіх своїх контролерах перегляду, так, вам слід абсолютно імпортувати його у кожен контролер перегляду, який фактично його використовує. Це робить зрозумілі залежності. Коли ви повторно використовуєте свій контролер перегляду в новому проекті (що є звичайним, якщо ви добре побудуєте контролери), ви відразу дізнаєтесь, що йому потрібно. Це особливо важливо для категорій, які можуть зробити код дуже важким для повторного використання, якщо вони неявні.
Файл PCH не існує для позбавлення від лістингу залежностей. Вам все одно слід імпортувати UIKit.h
або Foundation.h
за потреби, як це роблять шаблони Xcode. Причиною PCH є поліпшення часу нарощування при роботі з дійсно масивними заголовками (наприклад, в UIKit).
TWAPIManager.m
, наприклад, в інший проект, ви отримаєте помилки, які TWALog()
не визначені, без підказки про те, де його знайти. Я стикався саме з цією проблемою в кількох великих проектах, які намагаються поділитися кодом. Створення TWAPILog.h
та імпорт це вирішує це за тривіальну вартість розробників.
Без запитання, правильно це чи ні, ви можете додати файл PCH вручну:
Додайте до проекту новий файл PCH : Новий файл> Інше> Файл PCH .
За допомогою параметра Налаштування збірки цілі встановіть значення заголовка префіксу на ім'я файлу PCH, а назва проекту - як префікс (тобто для імені проекту TestProject
та імені файлу PCH MyPrefixHeaderFile
, додайте значення TestProject/MyPrefixHeaderFile.pch
до списку).
ПОРАДА: Ви можете використовувати такі речі, як, $(SRCROOT)
або, $(PROJECT_DIR)
щоб дістатися до шляху, куди ви ставите .pch
проект.
За допомогою параметра Налаштування збірки цілі встановіть значення заголовка префіксації прекомпіляції на YES
.
Потрібно створити власний файл PCH
ДодатиNew file -> Other-> PCH file
Потім додайте шлях до цього файлу PCH до вашої збірки setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Щоб додати .pch файл-
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) Додати нову програму - Виберіть iOS - інше та файл PCH
(2) додати шлях до цього файлу PCH до свого проекту - BuildSetting - Apple LLVM 6.0 Language
Додати Встановити заголовок префіксу заголовок YourApplicationName (root-path) /filename.pch