#cocoa #xcode #macos
Скачал исходный код торрент-клиента Transmission для изучения. Пытаюсь идти по цепочке, и если я правильно все понял, то: Как и у всех C-подобных программ, запуск начинается с функции main() Далее, отсюда функция NSApplicationMain() запускает обработчик (цикл) сообщений, которые будут поступать из файлов .xib ? - и здесь моя цепочка обрывается В каком месте программа продолжается? Нет нигде ни AppDelegate, ни реализации протокола NSApplicationDelegate. Не могу уцепиться - выйти из функции main() - куда мне последовательно идти? Какой файл дальше просматривать? Файл .xib с окном, которое появляется первым при запуске программы, я нашел. Но откуда программа его запускает?
Ответы
Ответ 1
Отвечу на вопросы в обратном порядке. Программа запускает файл с окном из main bundle приложения. Это происходит в функции NSApplicationMain. В случае Transmission этот самый .xib - это MainMenu.xib. Затем стоит просмотреть файл Controller.h. У главного окна приложения через IBOutlet указан экземпляр класса Controller - значит, этот класс будет инстанцирован уже в функции NSApplicationMain. Перед посылкой классу любого другого сообщения будет послано сообщение +initialize, начинать читать можете с него. После этого будет послан обычный alloc-init, читаете, что происходит в init. После переходите к awakeFromNib, который вызывается после инициализации объекта, загруженного из nib-файла. Только после этого NSApplicationMain создаст главный NSRunLoop приложения, который, как вы сказали, будет принимать события от пользовательского интерфейса.
Комментариев нет:
Отправить комментарий