如果我删除applicationWillResignActive
和applicationDidEnterBackground
这样的默认应用委托方法,你能帮助我理解为什么app仍然可以工作吗?
在某种程度上,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
。如果您的应用确实需要做某事,那么您将实现该功能。
什么是代表?
单例UIApplication对象调用的一组方法,用于响应应用生命周期中的重要事件。
为什么你的应用有效?
applicationWillResignActive
和applicationDidEnterBackground
是可选的委托方法。
他们的唯一目的是通知您的应用程序是否发生了这些事件。如果您删除这些方法,则当您的应用进入后台或暂停时,您的应用不会收到通知。由于这些方法只提供通知,因此它与您的成功运行无关。
如果应用程序未处于活动状态时,您的应用只需要处理后台任务。