Ввод приложения и последовательность вызовов при запуске .ipa - PullRequest
0 голосов
/ 10 ноября 2011

Я недавно перешел с программирования на C на разработку для iphone с Xcode. Кажется, IDE скрывает много тривиальных вещей, и мне интересно, что происходит под капотом.

Я нахожу файл с именем main.m в моем проекте. Внутри этой функции вызывается UIApplicationMain(argc, argv, nil, nil);. У меня вопрос, какие задачи будет выполнять UIApplicationMain? Могу ли я войти в эту функцию, отслеживая ее выполнение?

Любые советы будут оценены.

Спасибо и всего наилучшего.

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

iOS-приложения Cocoa Touch используют управляемую событиями парадигму, а не строго последовательный процедурный код.

UIApplicationMain () указывает среде выполнения ОС и Objective C настраивать параметры (plist'ed defaults, main nib,цикл выполнения и т. д.), а затем начните диспетчеризацию основного цикла выполнения для методов в вашем приложении.Поставьте точки останова в начале всех ваших методов (init / load / event processing), чтобы увидеть, что ОС начинает вызывать первым.

ОС делает целую кучу вещей, в которые вы не можете вступить.Вам нужно подождать, пока все будет хорошо и вы готовы вызывать методы в вашем приложении.

1 голос
/ 10 ноября 2011

UIApplicationMain - точка входа для приложения Какао.Он устанавливает основной класс приложения и его делегат и запускает цикл обработки событий.Не возвращается.

Из документации :

Эта функция создает экземпляр объекта приложения из основного класса и создает экземпляр делегата (если есть)из данного класса и устанавливает делегат для приложения.Он также устанавливает основной цикл обработки событий, включая цикл выполнения приложения, и начинает обработку событий.Если в файле Info.plist приложения указан основной файл пера, который нужно загрузить, включая ключ NSMainNibFile и допустимое имя файла пера для значения, эта функция загружает этот файл пера.

Вы не 'на самом деле мы не хотим разбираться в этой конкретной функции, потому что есть только целая куча бинарных инструкций, смотреть на которые не будет поучительно.Но если подумать, это функция «контейнера» для всего вашего приложения.Как только он выполняет настройку, он запускает обработку событий в цикле выполнения и при необходимости вызывает ваш код.Он будет в нижней части стека вызовов для всего кода вашего приложения в главном потоке.

Посмотрите на великолепные диаграммы на этой странице, чтобы узнать больше о жизненном цикле приложения, который должен дать вам несколько советов о том, куда поместитьточки останова в вашем собственном коде и как они будут называться: http://www.codeproject.com/KB/iPhone/ApplicationLifeCycle.aspx

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