Я должен импортировать UIKit в каждом файле, который я кодирую?

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

Спасибо!

20
задан Anthony Glyadchenko 17 February 2010 в 17:58
поделиться

3 ответа

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

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

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

21
ответ дан 29 November 2019 в 23:27
поделиться

Хотя файл 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, поэтому нет причин импортировать оба.

26
ответ дан 29 November 2019 в 23:27
поделиться

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

0
ответ дан 29 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: