Я зазвичай уникаю дизайнерського підходу, який передбачає використання Андрієм терміна "серце вашої заявки". Я маю на увазі під цим те, що я думаю, що вам слід уникати забивання занадто багато речей у центральному місці - хороший дизайн програми зазвичай передбачає розділення функціональності на "область, що викликає занепокоєння".
Об'єкт-делегат - це об'єкт, який отримує сповіщення, коли об’єкт, до якого він підключений, досягає певних подій або станів. У цьому випадку Делегат додатків - це об'єкт, який отримує сповіщення, коли об’єкт UIApplication досягає певних станів. Багато в чому це спеціалізований зразок спостереження один на один.
Це означає, що "область, яка хвилює" для AppDelegate, обробляє спеціальні стани застосунку UIA. Найважливіші з них:
- applicationDidFinishLaunching - добре підходить для налаштування та побудови при запуску
- застосуванняWillTerminate: - добре для очищення в кінці
Вам слід уникати розміщення інших функцій в AppDelegate, оскільки вони насправді там не належать. Такий інший функціонал включає:
- Дані про документ - у вас повинен бути менеджер документів одиночний (для декількох додатків документів) або документ одиночний (для одиночних програмних документів)
- Кнопки / таблиці / контролери перегляду, переглядати способи делегування або інші види обробки (за винятком побудови подання верхнього рівня в applicationDidFinishLaunching :) - ця робота повинна бути у відповідних класах контролерів перегляду.
Багато людей збивають ці речі у своєму AppDelegate, тому що вони ліниві або вважають, що AppDelegate контролює всю програму. Вам слід уникати централізації у вашому AppDelegate, оскільки це замулює сфери, які викликають занепокоєння у додатку, і не масштабується.