Я только начинаю работать на iPhone приложения. Как я знаю, когда я должен положить вещи в AppDelegate против пользовательского класса? Есть ли правила или любой тип аналогии с другим языком программирования, как Python или PHP, который использует AppDelegate как шаблон?
Что такое AppDelegate и как я могу знать, когда его использовать?
Я обычно избегать подхода к проектированию подразумеваемому с использованием Андреевского термина «сердце вашего приложения». То, что я имею в виду, что я думаю, что вы должны избегать комков слишком много вещей в одном месте - хороший дизайн программа обычно включает в себя разделение функциональности по «проблемной области».
Объект делегата является объектом, который получает уведомление, когда объект, к которому он подключен достигает определенные события или состояния. В этом случае приложение делегат является объектом, который получает уведомления, когда объект UIApplication достигает определенные состояния. Во многих отношениях это специализированный шаблон Observer один-к-одному.
Это означает, что «проблемная область» для AppDelegate обрабатывает особые состояния UIApplication. Наиболее важными из них являются:
- applicationDidFinishLaunching: - хорошо для обработки на запуске конфигурации и конструкции
- applicationWillTerminate: - хорошо для очистки в конце
Вы должны избегать других функций в AppDelegate, так как они на самом деле не принадлежат там. Такие другие функции включают в себя:
- Данные документа - вы должны иметь менеджер документ синглтон (для нескольких приложений, документов) или документ синглтон (для применения отдельных документов)
- Кнопка / таблица / просмотр диспетчеры, вид делегатую метода или обработки другого вида (для строительства зрения верхнего уровня в applicationDidFinishLaunching :), за исключением - эта работа должна быть в соответствующих классах вида контроллера.
Многие люди сваливать эти вещи в их AppDelegate, потому что они ленивы или они думают, что AppDelegate контролирует всю программу. Вы должны избегать централизации в вашем AppDelegate, поскольку она мутит проблемных областей в приложении и не масштабируется.
Приложение Делегат является сердцем вашего приложения. Это эффективно ваш «Контроллер программы».
Применение Делегат является классом, который принимает сообщения на уровне приложений, в том числе сообщения applicationDidFinishLaunching наиболее часто используется, чтобы инициировать создание других взглядов.
Хотя не совсем похоже вы могли бы думать о нем, как «основной ()» монотонность вашей какао программы.
Надеюсь, это поможет немного больше ...
Программисты новые на этом языке всегда имеют один и тот же вопрос - это запустить программу из основного метода? Да, вы правы , в этом случае; IOS приложений также исходить из основного метода.
Ваш главный класс называет ниже функции:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain пинает запуск цикла и приложение инфраструктуру Cocoa Touch , который создает UIApplicationобъект. Наше приложение должно содержание так Objective-C использует делегат справиться с этим. Вот почему мы называем его AppDelegate (выступать в качестве делегата UIApplication). Мы реализуем некоторые из дополнительных методов этого делегата и ведет себя соответствующим образом .
@Shivam, спасибо.
Из того, что я понимаю , о appDelegate, близка к тому , что Applicationв Android. viewDidLoad, viewDidDisappearСравнимо с каким жизненным циклом Android. Каждое приложение имеет свой жизненный цикл, от запуска к перерывам из вызовов , поступающих, уведомлений , показывая вверх. Если вам нужен код , чтобы сделать что - то особенное , когда эти systemсобытия происходят , то вам необходимо написать код методов.
В Android мы используем onPause, onDestroy, onCreateсвоего рода методы обратного вызова для обработки таких системных событий.













