Swift 即使我有睡眠线程,cocoa应用程序退出代码也不会执行
我正在尝试在应用程序退出时保存应用程序上的引用 但代码无法运行 我尝试了不同的代码和相同的结果Swift 即使我有睡眠线程,cocoa应用程序退出代码也不会执行,swift,cocoa,Swift,Cocoa,我正在尝试在应用程序退出时保存应用程序上的引用 但代码无法运行 我尝试了不同的代码和相同的结果 func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply { // print(arrayOfUsernamesList) UserDefaults.standard.setValue("prefs1", forKey: "preferences")
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
// print(arrayOfUsernamesList)
UserDefaults.standard.setValue("prefs1", forKey: "preferences")
return .terminateNow
}
这是错误的委托方法,请使用
applicationWillTerminate
和从不使用setValue(:forKey
将内容保存到UserDefaults
。始终使用通用集(:forKey
func applicationWillTerminate(_ aNotification: Notification)
{
UserDefaults.standard.set("prefs1", forKey: "preferences")
}
这是错误的委托方法,请使用
applicationWillTerminate
和从不使用setValue(:forKey
将内容保存到UserDefaults
。始终使用通用集(:forKey
func applicationWillTerminate(_ aNotification: Notification)
{
UserDefaults.standard.set("prefs1", forKey: "preferences")
}
@MohmmadS
setValue
是一种键值编码方法,具有特殊的功能和开销。只有在您确实需要KVC时才使用KVC方法(在这种情况下永远不会)。当我使用exit(0)关闭应用程序时,它不会调用该函数。除exit(o)ext外,是否还有其他功能关闭应用程序?为什么exit(0)
?这是用于CLI的。通常的方法是调用委托方法的NSApp.terminate(nil)
。@MohmmadSsetValue
是一种具有特殊功能和开销的键值编码方法。仅当您确实需要KVC时才使用KVC方法(在这种情况下永远不会)。当我使用exit(0)时要关闭应用程序,它不会调用该函数。除exit(o)ext外,是否还有其他方法关闭应用程序?为什么exit(0)
?这是用于CLIs的。通常的方法是调用委托方法的NSApp.terminate(nil)
。