Должен ли я импортировать UIKit в каждый файл, который я кодирую? - PullRequest
19 голосов
/ 17 февраля 2010

Я пишу код для iPhone и задаюсь вопросом, нужно ли мне включать UIKit в каждый файл, который кодирует, или есть лучшее правило относительно того, когда это делать, а когда нет?

Спасибо!

Ответы [ 3 ]

25 голосов
/ 17 февраля 2010

Несмотря на то, что файл pch удобен для предварительной компиляции заголовков, я очень рекомендую, чтобы файлы импортировали то, что они используют. Это значительно упрощает понимание зависимостей и позволяет повторно использовать код, в том числе на разных платформах (iPhone и Mac).

Учитывая это, ответ таков: вам не следует импортировать UIKit.h в каждый файл. Вы должны импортировать его в каждый файл, который использует UIKit. Это должны быть ваши классы View и Controller. Классы моделей почти никогда не должны использовать UIKit. Как правило, они должны импортировать Foundation.h. Следование этому правилу облегчит перемещение ваших объектов в другие проекты, которые могут иметь другой код в файле .pch, и упростит повторное использование классов вашей модели на iPhone и Mac.

Я также обычно не рекомендую импортировать UIKit.h или Foundation.h в подклассы ваших собственных классов. Обычно я просто импортирую UIKit, AppKit или Foundation в заголовочный файл самого высокого уровня в моем коде. Например, если у меня есть подкласс UIView с именем MYAbstractView, который импортирует UIKit.h (чтобы включить определение UIView), а затем добавить подкласс MYConcreteView, я просто импортирую MYAbstractView.h.

Обратите внимание, что UIKit и AppKit уже импортируют Foundation, поэтому нет причин когда-либо импортировать оба.

21 голосов
/ 17 февраля 2010

Вы должны использовать UIKit, когда вам нужны компоненты GUI. Но вам не нужно импортировать эту библиотеку, если она уже определена в Prefix.pch:

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

Позволяет импортировать эти библиотеки для всего вашего текущего проекта.

0 голосов
/ 17 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...