Я новичок в objective-c и хотел бы узнать, как лучше импортировать некоторые внешние заголовки, которые я использую в своем классе.
Должен ли я хранить #import "classB.h" в своих собственных файлах .h или в файле .m?
Какая разница?
Спасибо!
Ответ 1
Правильная практика заключается в том, чтобы в заголовке и #import "classB.h в формате .m
было указано объявление прямого класса (@class classB;
).
Объявление прямого класса, например @class classB;
, позволяет компилятору знать, что он должен ожидать класс позже, и он не должен жаловаться на него в данный момент.
Ответ 2
Чтобы избежать циклических ссылок, только #import заголовочный файл в файле заголовка другого класса, если он наследует от этого класса. В противном случае используйте @class ClassName, чтобы объявить тип класса, если он вам нужен в вашем файле заголовка, и #import его в файле реализации.
Ответ 3
Для компилятора это действительно не имеет значения. Вы можете просто отправить вперед декларации в своем .h, а затем дождаться #import до вашего .m файла. См. этот пост на SO для получения дополнительной информации об этом.
Из проспективного кода в чистом виде некоторые могут утверждать, что размещение импорта в вашем файле реализации поддерживает детали ближе к тому, где они необходимы (см. эту ссылку выше, а люди ссылаются на эту идею).
Ответ 4
Он рекомендовал импортировать другие файлы заголовков в файл заголовка. Таким образом, вы можете использовать класс как в заголовке, так и в файлах реализации (поскольку файл реализации (.m) импортирует связанный файл заголовка).
Если вы хотите узнать, когда импортировать файлы и когда использовать декларацию в прямом классе, вы можете пойти здесь.; -)