我一直在寻找如何以编程方式终止我的应用程序。我在许多主题中发现人们使用NSApp terminate:id
.
在 Xcodeterminate:id
中是交叉的。这种方法是否已弃用?我应该用它来终止我的应用程序吗?如果没有,这是正确的方法吗?
更新: 当我说它被交叉时,我的意思是:
我一直在寻找如何以编程方式终止我的应用程序。我在许多主题中发现人们使用NSApp terminate:id
.
在 Xcodeterminate:id
中是交叉的。这种方法是否已弃用?我应该用它来终止我的应用程序吗?如果没有,这是正确的方法吗?
更新: 当我说它被交叉时,我的意思是:
我没有看到它terminate
已被弃用。编译器警告的一个可能原因可能是
[NSApp terminate:sender]
NSApp
返回一个 general id
,以便编译器不知道terminate
实际意味着哪个消息。确实,如果我使用“跳转到定义”,Xcode 会跳转到
@protocol NSInputServiceProvider
...
- (void) terminate:(id)sender NS_DEPRECATED_MAC(10_0, 10_6);
但是如果你使用等效的代码
[[NSApplication sharedApplication] terminate:sender];
然后编译器警告消失。
终止接收器。
- (void)terminate:(id)sender
发件人
通常,此参数包含发起终止请求的对象。
当用户从应用程序的菜单中选择退出或退出时,通常会调用此方法。
调用时,此方法执行几个步骤来处理终止请求。首先,它要求应用程序的文档控制器(如果存在)保存其文档中所有未保存的更改。在此过程中,文档控制器可以响应来自用户的输入取消终止。如果文档控制器没有取消操作,则此方法然后调用委托的applicationShouldTerminate:
方法。如果applicationShouldTerminate:
返回NSTerminateCancel
,则终止过程中止并将控制权交还给主事件循环。如果方法返回NSTerminateLater
,应用程序在模式下运行它的运行循环,NSModalPanelRunLoopMode
直到replyToApplicationShouldTerminate:
使用值YES
or调用方法NO
。如果该applicationShouldTerminate:
方法返回NSTerminateNow
,则该方法发布一个NSApplicationWillTerminateNotification
通知到默认通知中心。
不要费心将最终的清理代码放入应用程序的main()
函数中——它永远不会被执行。如果需要清理,请在委托的applicationWillTerminate:
方法中执行清理。
在 OS X v10.0 及更高版本中可用。
– run
– stop:
– applicationShouldTerminate:
(NSApplicationDelegate)– applicationWillTerminate:
(NSApplicationDelegate)– replyToApplicationShouldTerminate:
NSApplicationWillTerminateNotification
NSApplication.h