gpt4 book ai didi

objective-c - 退出应用程序的方法之间的区别 : exit(), NSApp/NSApplication terminate

转载 作者:太空狗 更新时间:2023-10-30 03:31:14 27 4
gpt4 key购买 nike

我在网上查找了如何退出应用程序,发现了很多相互矛盾的答案。不同的人提出了以下建议,每个人都有不同的理由:

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: 不会简单地退出应用程序。如果实现,它将调用应用程序委托(delegate)的 -applicationShouldTerminate: 方法。根据返回码,委托(delegate)人可以取消终止或推迟决定。如果延迟决定,应用程序将以等待它的特殊模式运行。

最后,如果应用确实(最终)终止,NSApplication 将发布 NSApplicationWillTerminateNotification 通知。如果应用程序委托(delegate)实现了 -applicationWillTerminate:,它将作为发布该通知的结果被调用。代表可以做一些最后的清理工作。除了委托(delegate)之外,该通知的任意其他观察者都希望有机会进行清理。

调用 exit(0) 没有任何机会。

关于objective-c - 退出应用程序的方法之间的区别 : exit(), NSApp/NSApplication terminate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com