【问题标题】:How to know when a Cocoa app is about to quit?如何知道 Cocoa 应用程序何时将退出?
【发布时间】:2013-01-25 17:21:33
【问题描述】:

我有一个基于 NSDocument 的应用程序。我想知道应用程序何时将退出以验证某些内容。我希望可能有一种方法,例如 applicationWillQuit,但是查看 NSDocument 和 NSApplication 的文档我找不到类似的东西。

【问题讨论】:

    标签: xcode cocoa nsdocument nsapplication


    【解决方案1】:

    您可以使用来自 NSApplication 的通知:

    NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
     [nc addObserver:self 
            selector:@selector(appWillTerminate:) 
                name:NSApplicationWillTerminateNotification 
              object:nil];
    

    这在此处记录:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/nsapplication_Class/Reference/Reference.html

    通过将对象作为nil 传递,只要对象触发通知,就会调用您的方法。

    【讨论】:

    • NSApplicationWillTerminateNotification 由 terminate: 方法发布,表示应用程序将终止。仅当委托方法 applicationShouldTerminate: 返回 YES 时才发布。通知对象是 sharedApplication。此通知不包含 userInfo 字典。
    • 您的应用程序委托还可以确定是否应该首先在 applicationShouldTerminate 委托方法中执行某些操作。 NSApplicationWillTerminateNotification 只说它会发生。
    • 是的,正确。 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender 将是方法签名。
    • 感谢您提供的解决方案和链接,完全符合需要。
    【解决方案2】:

    我们在 AppDelegate.swift 或 AppDelegate.m 类中有一个委托方法。您可以在关闭它之前使用它并向您的应用程序添加功能。

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-23
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多