没有应用程序委托方法的应用程序操作

时间:2019-02-24 21:24:52

标签: ios cocoa-touch uiapplicationdelegate

如果我删除默认的应用程序委托方法(例如applicationWillResignActiveapplicationDidEnterBackground,可以帮我理解为什么应用程序仍然可以工作吗?

2 个答案:

答案 0 :(得分:2)

在某种程度上,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。如果您的应用确实需要执行某些操作,则可以实现该功能。

答案 1 :(得分:0)

什么是委托人?

from documentation:

  

由单例UIApplication对象调用的一组方法   响应应用程序生命周期中的重要事件。

您的应用为何运行?

applicationWillResignActiveapplicationDidEnterBackground是可选的委托方法。

它们的唯一目的是在发生这些事件时通知您的应用。如果删除这些方法,则当您的应用进入后台或暂停状态时,您的应用将不会收到通知。由于这些方法的唯一工作就是提供通知,因此与成功运行无关。

您的应用仅在应用处于非活动状态时需要处理后台任务时才需要此方法。