[英]Difference between ways to quit an application: exit(), NSApp/NSApplication terminate
我查看了如何在线退出应用程序,我发现了许多相互矛盾的答案。 不同的人提出以下建议,每个都有不同的原因:
exit(0);
[NSApp terminate:self];
[NSApp terminate:nil];
[[NSApplication sharedApplication] terminate:self];
作为Objective-C的新手,所有这些对我来说都很合理。 每种方法何时最适合使用?
所有这些:
[NSApp terminate:self];
[NSApp terminate:nil];
[[NSApplication sharedApplication] terminate:self];
做同样的事。 NSApp
是一个保存应用程序对象的全局变量。 [NSApplication sharedApplication]
返回应用程序对象,如果这是第一次调用,则创建它然后返回它。 如果你正在考虑退出应用程序,这几乎肯定不是第一次打电话。
-terminate:
方法忽略参数( sender
)。 它需要一个参数的唯一原因是它是一个动作方法,这是动作方法的一般形式。
请注意, -terminate:
不会简单地退出应用程序。 它将调用app delegate的-applicationShouldTerminate:
方法(如果已实现)。 根据返回代码,代表可以取消终止或推迟决定。 如果决定延期,则应用程序将以特殊模式运行,等待它。
最后,如果应用程序(最终)终止, NSApplication
将发布NSApplicationWillTerminateNotification
通知。 如果app委托实现了-applicationWillTerminate:
,那么将通过发布该通知来调用它。 代表可以做一些最后的清理工作。 除了委托之外,该通知的任意其他观察者可能希望有机会进行清理。
调用exit(0)
提供任何机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.