确定应用程序是否因为系统正在关闭而终止
Identifying if the application is terminating because the system is shutting down
我正在尝试将 Objective-C 中的这些行转换为 swift
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
{
...
NSAppleEventDescriptor* appleEventDesc = [[NSAppleEventManager sharedAppleEventManager] currentAppleEvent];
NSAppleEventDescriptor* whyDesc = [appleEventDesc attributeDescriptorForKeyword:kEventParamReason];
OSType why = [whyDesc typeCodeValue];
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
他们将检测应用程序是否因系统关闭而终止。
我无法转换此行
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
我猜是这样的
let codeValue = whyDescription?.typeCodeValue
if ((codeValue == AEKeyword(kAEShutDown)) ||
(codeValue == AEKeyword(kAERestart)) ||
(codeValue == AEKeyword(kAEReallyLogOut))) {
这是正确的吗?
或者应该是
if ((codeValue == OSType(kAEShutDown)) ||
(codeValue == OSType(kAERestart)) ||
(codeValue == OSType(kAEReallyLogOut))) {
Xcode 编译得很好,但我不确定 kAEShutDown
、kAERestart
和 kAEReallyLogOut
是否是可以在那里使用的 AEKeywords。
正如预期的那样,我找不到相关文档。
AEKeyword
和OSType
都是typealias
到FourCharCode
。从技术上讲,它们是同一类型,因此您使用哪种并不重要。
但是,由于 typeCodeValue
声明为 OSType
,因此 OSType
是合乎逻辑的选择。
此外,常量似乎已经声明为 OSType
,因此没有任何理由强制转换它们。
我正在尝试将 Objective-C 中的这些行转换为 swift
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
{
...
NSAppleEventDescriptor* appleEventDesc = [[NSAppleEventManager sharedAppleEventManager] currentAppleEvent];
NSAppleEventDescriptor* whyDesc = [appleEventDesc attributeDescriptorForKeyword:kEventParamReason];
OSType why = [whyDesc typeCodeValue];
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
他们将检测应用程序是否因系统关闭而终止。
我无法转换此行
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
我猜是这样的
let codeValue = whyDescription?.typeCodeValue
if ((codeValue == AEKeyword(kAEShutDown)) ||
(codeValue == AEKeyword(kAERestart)) ||
(codeValue == AEKeyword(kAEReallyLogOut))) {
这是正确的吗?
或者应该是
if ((codeValue == OSType(kAEShutDown)) ||
(codeValue == OSType(kAERestart)) ||
(codeValue == OSType(kAEReallyLogOut))) {
Xcode 编译得很好,但我不确定 kAEShutDown
、kAERestart
和 kAEReallyLogOut
是否是可以在那里使用的 AEKeywords。
正如预期的那样,我找不到相关文档。
AEKeyword
和OSType
都是typealias
到FourCharCode
。从技术上讲,它们是同一类型,因此您使用哪种并不重要。
但是,由于 typeCodeValue
声明为 OSType
,因此 OSType
是合乎逻辑的选择。
此外,常量似乎已经声明为 OSType
,因此没有任何理由强制转换它们。