Работа приложения без методов делегата приложения - PullRequest
0 голосов
/ 25 февраля 2019

Можете ли вы помочь мне понять, почему приложение все еще работает, если я удаляю методы делегата приложения по умолчанию, такие как applicationWillResignActive и applicationDidEnterBackground?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Что такое делегат?

из документации:

Набор методов, вызываемых одноэлементным объектом UIApplication вответ на важные события в жизни вашего приложения.

Почему ваше приложение работает?

applicationWillResignActive & applicationDidEnterBackground - необязательные методы делегата.

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

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

0 голосов
/ 25 февраля 2019

Частично объявление протокола UIApplicationDelegate выглядит следующим образом:

public protocol UIApplicationDelegate : NSObjectProtocol {

    optional public func applicationDidFinishLaunching(_ application: UIApplication)

    optional public func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool

    optional public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool

    optional public func applicationDidBecomeActive(_ application: UIApplication)

    optional public func applicationWillResignActive(_ application: UIApplication)

   ...

Обратите внимание, что функции объявлены как необязательно .Это означает, что код, соответствующий протоколу, не должен реализовывать эти функции.

Если вашему приложению не нужно делать ничего особенного, когда оно входит в фон, вам не нужно реализовывать applicationDidEnterBackground.Если вашему приложению нужно что-то сделать, вы бы реализовали эту функцию.

...