Почему определения target-c @interface помещаются в отдельный файл .h? - PullRequest
1 голос
/ 29 апреля 2011

Я понимаю, что это общий тип вопросов, но мне было бы интересно ваше мнение о:

  • почему определения @interface @protocol и @property разделяются в заголовочном файле .h, а затем импортируются в файл реализации?

Есть ли кто-нибудь, кто просто определяет все в файле .m?

Кстати, я не собираюсь использовать .h файлы, просто пытаюсь понять, что за этим стоит!

1 Ответ

6 голосов
/ 29 апреля 2011

Поскольку Objective-C опирается на стандартную инфраструктуру C, в которой каждый модуль компиляции (.m) компилируется отдельно, а затем все они связаны друг с другом.

Это означает, что на этапе статической проверки типов компилятора Objective-C потребуются только файлы .h, чтобы узнать характеристики объявленных классов (например, сигнатуры методов), но просто чтобы убедиться, что все используется как есть. предполагается, и именно поэтому вы #import их в других исходных файлах, которые требуют того, что вы объявили внутри заголовка.

если у вас есть A.h/.m и B.h/.m, которые используют A, вы можете думать о заголовочном файле как о контракте: «если вы хотите использовать A, я свяжу его двоичный код в конце фазы компиляции, что A может предоставить описание, описанное в этом заголовочном файле, и это единственное, что вам следует знать "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...