簡體   English   中英

退出應用程序的方法之間的區別:exit(),NSApp / NSApplication終止

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM