Я кодирую для iPhone и задаюсь вопросом, должен ли я включать UIKit в каждый файл, которые кодируют или есть ли лучшее правило относительно того, когда сделать так и когда Вы не имеете к?
Спасибо!
Вы должны использовать UIKit, когда вам нужны компоненты графического интерфейса. Но вам не нужно импортировать эту библиотеку, если она уже определена в Prefix.pch:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
Он позволяет вам импортировать эти библиотеки для всего вашего текущего проекта.
Хотя файл 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, поэтому нет причин импортировать оба.
Вы должны импортировать его в .h-файл любого класса, которому он нужен. Это верно, если только класс не расширяет другой класс, который импортирует его, тогда это не нужно. Вероятно, вам не нужно делать ничего более сложного, поскольку все приложения iPhone будут связывать эту библиотеку. Если речь идет о сторонней или менее распространенной библиотеке, то, возможно, стоит быть осторожнее. Чтобы избежать проблем с повторным использованием кода.