Ответ
Нет, создавать подклассы UIApplication не рекомендуется и практически никогда не требуется. Apple явно указывает в документации, что UIApplication — синглтон, управляемый iOS, и его подклассирование может привести к нестабильности.
Правильный подход — использование UIApplicationDelegate:
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Настройка приложения при запуске
return true
}
func application(_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
// Обработка deep links
return true
}
}
Когда может потребоваться подкласс (крайне редко):
- Перехват всех событий приложения через
sendEvent(_:) - Кастомизация обработки удаленных уведомлений
Пример (не рекомендуется без веской причины):
class CustomApplication: UIApplication {
override func sendEvent(_ event: UIEvent) {
// Логирование или модификация событий
super.sendEvent(event)
}
}
// В Info.plist: Principal class = "YourApp.CustomApplication"
Лучшие практики:
- Используйте
UIApplicationDelegateдля lifecycle событий - Для глобального перехвата событий рассмотрите
UIWindowилиUIResponderцепочку - Для модификации поведения используйте middleware-паттерны, а не подклассы
UIApplication - Следуйте документации Apple:
UIApplicationпредназначен для управления системой, а не для кастомизации