iphone - 检查常量是否在运行时在 Obj-C 中定义

标签 iphone objective-c cocoa cocoa-touch macos

例如,要访问 NSDictionary 中的变量,Cocoa 框架通常会定义键,例如 UIKeyboardBoundsUserInfoKey。如何检查运行时是否定义了键?我找到了有关如何检查类和函数而不是常量的示例。

最佳答案

Jasarien 的回答大致正确,但在 LLVM 1.5 下容易出现问题,编译器会优化 if 语句。

您还应该将常量的地址与 NULL 进行比较,而不是 nil(nil 具有不同的语义)。

更准确的解决方案是这样的:

BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
  // UIKeyboardBoundsUserInfoKey defined
}

关于iphone - 检查常量是否在运行时在 Obj-C 中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122177/

相关文章:

iphone - 如何找到 UILabel 可以容纳的字符数?

iPhone 注册时钟更新

ios - CALayer "contents"属性上的隐式动画

macos - 修改 NSTextStorage 导致插入点移动到行尾

ios - ToolbarItems 在 iOS 中看起来不正确

iphone - 如何将推送通知同时发送到 iPhone 和 Android?

ios - 延迟显示一个字母

iphone - 以编程方式从 PC/Mac 读取 iPhone 文件

ios - 符合协议(protocol)的类 - 编译时检查

objective-c - ConnectionKit框架: Adding it to a project