Некоторые методы не объявлены в файлах .h - PullRequest
0 голосов
/ 07 января 2012

Я работаю с книгой Objective-C "Ranch Big Nerds" и заметил, что в одной из глав, где они настраивают наблюдателя для прослушивания изменений часового пояса, они создают метод в файле .m с именем zoneChangedоднако это не должно быть объявлено в .h?Как можно использовать методы без объявления?Это потому, что он должен был быть запущен только наблюдателем?

Я читал, что если вы объявите метод в файле .m, то он будет закрытым, но, кажется, вообще не объявлен вфайл .m.

1 Ответ

1 голос
/ 07 января 2012

Как можно использовать методы без объявления?

То, что они делают, напрямую предоставляет само определение. Проблема в том, что если он не объявлен в заголовочном файле, любой другой файл, зависящий от этого файла, не знает о существовании функции zoneChanged. Однако вы можете связать его через ключевое слово extern, и это другая история.

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

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