objective-c - 在哪里定义了像 NSControlKeyMask 这样的标识符

标签 objective-c cocoa swift

NSControlKeyMaskNSAlternateKeyMaskNSShiftKeyMask 等标识符在哪里定义?我需要使用名为 DDHotKey 的 Objective-C 库编译 Swift 项目包含以下代码:

if (modifiers & NSControlKeyMask) {
    [final appendString:[characterMap objectForKey:@(kVK_Control)]];
}
if (modifiers & NSAlternateKeyMask) {
    [final appendString:[characterMap objectForKey:@(kVK_Option)]];
}
if (modifiers & NSShiftKeyMask) {
    [final appendString:[characterMap objectForKey:@(kVK_Shift)]];
}

此代码给我以下错误:

Use of undeclared identifier 'NSControlKeyMask'

Use of undeclared identifier 'NSAlternateKeyMask'

Use of undeclared identifier 'NSShiftKeyMask'

为什么?我究竟做错了什么?我该如何解决?

提前致谢。

最佳答案

“DDHotKey”示例项目使用预编译头文件“DDHotKey_Prefix.pch”及其内容

#ifdef __OBJC__
    #import <Cocoa/Cocoa.h>
#endif

所以<Cocoa/Cocoa.h>自动包含在所有 Objective-C 中 来源。这又包括 Foundation 和 AppKit 框架 标题。

新的 Xcode 项目不再创建预编译的头文件。 如果您只是将示例项目中的源文件复制到 一个新项目,就会出现你的错误。

您可以将预编译的头文件添加到您的项目中, 但实际上添加似乎就足够了

#import <AppKit/AppKit.h>

在“DDHotKeyUtilities.m”中。

关于objective-c - 在哪里定义了像 NSControlKeyMask 这样的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29393333/

相关文章:

swift - 使用 GCD 在 Swift 3 中安全地锁定变量

ios - Swift - SharkORM 忽略并加密属性

ios - 首次加载时 SDWebImage 单元格 ImageView 大小错误

ios - 自定义 UITableView 标题部分

ios - UITableView insertRows 不锁定主线程

ios - 如果 block 内发生异常会怎样?

xcode - OS X Today Widget - 如果内容已更改,如何在 NCWidgetProviding.widgetPerformUpdateWithCompletionHandler 中检测?

cocoa - 单击鼠标时“确定”按钮的行为有所不同

swift - 在我的 swift 实现中逐个读取字符串 char 非常慢

ios - 定义 SCNNode 的位置