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

App operation without app delegate methods

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

部分地,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。如果您的应用程序确实需要执行某些操作,那么您将实现该功能。

什么是委托?

from documentation:

A set of methods that are called by the singleton UIApplication object in response to important events in the lifetime of your app.

为什么你的应用能运行?

applicationWillResignActive & applicationDidEnterBackground 是可选的委托方法。

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

如果您的应用程序需要在应用程序未处于活动状态时处理后台任务,则仅需要此方法。