Подтвердить что ты не робот

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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