Отношения между AppDelegate и main.m - PullRequest
8 голосов
/ 12 августа 2010

Хорошо, я совершенно новичок в obj-c + какао, так что это, вероятно, очевидно, но вот так:

Я перешел от приложений командной строки к приложениям какао, изучая, как работатьс целью-c в Xcode.Одна вещь, которую я не очень понимаю, это роль AppDelegate и как он подключается к main.m

Кажется, что вы можете поместить всю свою программу в appdelegate, и она будет работать нормально, и вы неМне даже не нужен main.m, но не наоборот, если вы создаете приложение для какао, вы должны по крайней мере иметь приложение appdelegate.

Я много занимался PHP-разработкой и командамиЛинейные инструменты, так что я думаю, что мне нужен файл, который программа будет выполнять в первую очередь и предназначенный для «контроля» над остальными.

Может кто-нибудь помочь мне понять, что происходит в Какао?программа, как AppDelegate и main.m связаны (или не связаны), и каков должен быть поток программы?

Ответы [ 2 ]

11 голосов
/ 12 августа 2010

main.m содержит функцию main(), которая является точкой входа для программы, она запускается первой.Затем он вызывает UIApplicationMain(), который выполняет настройку приложения для конкретной ОС, и загружает основной файл Interface Builder .xib, который содержит экземпляр вашего делегата приложения.

То есть без main.m вашего делегата приложениядаже не будет загружен.

8 голосов
/ 12 августа 2010

Ключевой особенностью многих объектно-ориентированных систем (таких как Какао) является «инверсия управления» , что в основном означает, что среда запускает все, и любой код, который вы пишете, находится под его контролем.

Таким образом, в отличие от PHP, вы не пишете код, который выполняется при запуске.Что вы делаете, это определяете методы для делегата приложения, контроллеров, представлений и других объектов и позволяете платформе вызывать эти методы так, как это необходимо.Вы никогда не увидите общий «поток контроля» во всей программе;вы увидите это только как поток управления в ваши части программы.

Поначалу это может сбить с толку, поскольку вы пытаетесь понять, как обмануть фреймворк в вызове вашего кода в раз и в порядкевы ожидаете, но в долгосрочной перспективе это на самом деле делает вещи проще, поскольку вы можете доверять фреймворку, который позаботится о многих вещах для вас.

В приложении Какао большая логика приложениябудет фактически в контроллерах представления, а не в делегате приложения.Делегат приложения обычно отвечает за запуск и завершение работы, но другие объекты выполняют большую часть работы между запуском и выключением.Так что не пытайтесь втиснуть все в делегат приложения.

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