В чем разница при размещении заголовка внутри файла pch?

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

Для exmaple, UIKit.h

    One Solution collect form web for “В чем разница при размещении заголовка внутри файла pch?”

    Я считаю, что здесь есть два вопроса:

    1. Зачем дублировать импорт файлов заголовков в pch и отдельных исходных файлах? Вы правы, это избыточно, и вы можете легко избавиться от одного из дублированных импортов и по-прежнему запускать свою программу и по-прежнему сможете использовать помощь Xcode по завершению. Например, вы можете удалить импорт UIKit из .pch или View Viewer. Однако UIKit и UIFoundation являются особым случаем, поскольку они в значительной степени лежат в основе Cocoa Touch, и это именно то, как загружаются проекты шаблонов. И поэтому Apple решила их дублировать. Вероятно, это связано с тем, что разработчик может решить избавиться от .pch, и поэтому Apple хочет обеспечить, чтобы каждый новый UIViewController работал прямо из ворот, так как он автоматически импортировал UIKit. Но для всех других добавленных вами фреймворков / классов вам нужно только поместить их в одно место (файл .pch или отдельный исходный файл, который импортирует его). Это приводит к второму вопросу:

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

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

    PS2: Как указано в файле .pch, любые заголовки, перечисленные в .pch, будут импортированы во все исходные файлы. Вы можете подумать, что это избыточно, но использование #import устраняет избыточный импорт.

    Надеюсь это поможет

    Interesting Posts

    (Firebase) печатает неправильное количество пользователей в базе данных при подсчете пользователей в массиве

    Симулятор силовой iPad Retina для установки на MacBook Air Screen

    NSLog, показывающий предыдущую дату

    Minizip Libz Apple Mach-O Linker (ld) Группа ошибок

    Parse loginWithUsernameInbackground callback не работает

    В чем разница между встроенными бинарниками и связанными структурами

    Rails API vs NSDate – Точные проблемы при сравнении дат

    Настройки info.plist для iPad только для приложения

    Apple iOS – настройка профиля конфигурации приложения «App Lock» (также известный как «режим киоска») работает только с приложениями, установленными через конфигуратор Apple

    Переменные среды Xcode для подпроектов

    Получать уведомления, когда изменен MIDI-источник или источник

    Когда использовать развернутые опции как часть определения типа

    Присвоить переменной или вернуть ее прямо сейчас не работает

    Исходный код iOS8 NSURLSession

    Переменная не изменена в пользовательском инициализаторе

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.