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

Objective-C: импорт заголовков в .h или .m?

Я новичок в objective-c и хотел бы узнать, как лучше импортировать некоторые внешние заголовки, которые я использую в своем классе.

Должен ли я хранить #import "classB.h" в своих собственных файлах .h или в файле .m?

Какая разница?

Спасибо!

4b9b3361

Ответ 1

Правильная практика заключается в том, чтобы в заголовке и #import "classB.h в формате .m

было указано объявление прямого класса (@class classB; ).

Объявление прямого класса, например @class classB; , позволяет компилятору знать, что он должен ожидать класс позже, и он не должен жаловаться на него в данный момент.

Ответ 2

Чтобы избежать циклических ссылок, только #import заголовочный файл в файле заголовка другого класса, если он наследует от этого класса. В противном случае используйте @class ClassName, чтобы объявить тип класса, если он вам нужен в вашем файле заголовка, и #import его в файле реализации.

Ответ 3

Для компилятора это действительно не имеет значения. Вы можете просто отправить вперед декларации в своем .h, а затем дождаться #import до вашего .m файла. См. этот пост на SO для получения дополнительной информации об этом.

Из проспективного кода в чистом виде некоторые могут утверждать, что размещение импорта в вашем файле реализации поддерживает детали ближе к тому, где они необходимы (см. эту ссылку выше, а люди ссылаются на эту идею).

Ответ 4

Он рекомендовал импортировать другие файлы заголовков в файл заголовка. Таким образом, вы можете использовать класс как в заголовке, так и в файлах реализации (поскольку файл реализации (.m) импортирует связанный файл заголовка).

Если вы хотите узнать, когда импортировать файлы и когда использовать декларацию в прямом классе, вы можете пойти здесь.; -)