Как узнать, какой файл запускается первым в Xxode - PullRequest
1 голос
/ 17 сентября 2010

В проекте Xxode, в котором много файлов .h и .m, как определить, какой файл будет выполнен первым?

Ответы [ 3 ]

9 голосов
/ 17 сентября 2010

Файл, содержащий int main(int argc, char * argv[]);, будет запущен первым, так как функция main() является первой функцией, которая будет запущена.Почти во всех проектах шаблонов XCode этот файл называется «main.m».

edit

Обычно функция main() приложения Cocoa Touchэто:

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

(замените NSApplicationMain() на UIApplicationMain() и удалите пул автоматического выпуска, если вы пишете приложение для Mac)

edit # 2

Меня интересует только файл, который запускается первым из папки классов

Простой ответ: "Делегат приложения ", затем все остальное.

Технический ответ на этот вопрос заключается в том, что сначала будут созданы все объекты в вашем файле MainMenu.xib (Mac) или MainWindow.xib (iOS).Обычно объекты в этом файле создаются в том порядке, в котором они появляются, но я не думаю, что это гарантировано.

Так что, если у вас 3 есть пользовательские объекты верхнего уровня в файле MainWindow.xib, товсе они будут созданы одновременно (в пределах разумного).Сначала будут выполняться их initWithCoder: методы, затем через некоторое время будут выполняться их awakeFromNib методы (что обычно является самой безопасной «отправной точкой» для этого объекта).

Методы запуска делегата приложения будут происходить где-то втам тоже (я верю между initWithCoder: и awakeFromNib).

2 голосов
/ 17 сентября 2010

Приложения Cocoa и Cocoa-Touch полностью ориентированы на события. Нельзя сказать, что порядок выполнения методов можно понять, прочитав файлы исходного кода.

  • Как объяснил Дейв, вход в программу осуществляется с помощью функции main в main.m. Он сразу звонит UI/NSApplicationMain.
  • NS/UIApplicationMain - это функция, предоставляемая Cocoa (-Touch). Он следит за взаимодействием с пользователем и соответственно запускает события.
    • Например, когда пользователь нажимает кнопку, система автоматически вызывает то, что вы указали как метод действия , указанный в файле xib.
    • Другим примером является предоставляемый вами метод drawRect:: он вызывается, когда система решает нарисовать объект на экране. Очень важно, чтобы вы не активно рисовали на экране. Система попросит вас нарисовать экран, и вы ответите.
    • Один важный набор событий - это те, которые вызываются в начале программы, например, applicationDidFinishLaunching: или те, которые вызываются при загрузке представления из файла xib, viewDidLoad.
  • Аарон Хиллегасс провел замечательную аналогию ситуации: вы КИТТ и отвечаете на приказ Майкла Найта, а не наоборот. Вы должны быть старше определенного возраста, чтобы понять эту аналогию ...
1 голос
/ 17 сентября 2010

Еще одна вещь, которая должна быть запущена первой, - это в делегате приложения (определяется так: NSObject <UIApplicationDelegate> и настройка в кончике) метод applicationDidFinishLaunching

Это, очевидно, технически не первое, что нужно запустить. Основной цикл и все, что находится в UIApplication, будет выполнено первым, но в целом это хорошая отправная точка для приложений iOS и первое место, которым вы действительно управляете.

Вы также можете создать класс с именем «Контроллер», перетащить объект NSObject в свое перо и установить класс на «Контроллер». Тогда будет вызван метод awakeFromNib.

Любой из них должен подойти для настройки вашего приложения.

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