Я чрезвычайно новичок в xcode и объективе c. Я понимаю, что мы объявляем только методы в файле .h, если хотим, чтобы он был общедоступным для других классов. Я также заметил, что мы можем использовать расширения класса в файле .m, чтобы сделать метод «приватным». Но каким образом некоторые методы не объявлены нигде (например, viewDidLoad и т. Д.)?Почему нет необходимости объявлять метод viewDidLoad, viewDidUnload и т. Д.?
Заранее спасибо.
Я бы добавил, что viewDidLoad объявлен в UIViewController.h, который является частью структуры UIKit. UIKit включен в большинство шаблонов проектов по умолчанию, и если вы посмотрите в своих .h-файлах, вы, вероятно, увидите, что ссылка на UIKit.h указана. UIKit.h включает UIViewController.h. Вот как компилятор знает, что viewDidLoad существует, когда он компилирует ваш проект. – strings42
Импорт файла заголовка заключается в том, как компилятор знает, что селектор существует, что необходимо, но недостаточно. Компилятор также должен знать, что ваш класс хочет ответить на этот селектор, иначе ваша реализация и/или любые пользователи вашего класса могут получить предупреждения или ошибки (в зависимости от ваших настроек - также автозаполнение не будет обрабатывать метод и т. Д.). Наследование - это то, что позаботится об этой части. Поэтому я думаю, что ответ Джима - важная часть. – abarnert
Кроме того, '-viewDidLoad' - это метод делегата, и его селектор в основном жестко закодирован в AppKit/UIKit. Так как ваш собственный код не вызывает '-viewDidLoad' сам по себе, нет необходимости объявлять его в заголовке (т. Е. Делать это не будет подавлять никаких предупреждений или убедиться, что используется правильный тип возврата). – echristopherson