例如,对于一个NSDictionary
Cocoa框架中的访问变量通常会定义键,例如UIKeyboardBoundsUserInfoKey
。如何检查运行时是否定义了密钥?我找到了关于如何检查类和函数的例子,但不是常量。检查是否在运行时定义了常量Obj-C
20
A
回答
45
Jasarien的回答大致是正确的,但很容易出现LLVM 1.5下的问题编译器将优化if语句了。
您还应该比较常数的地址为NULL
,而不是nil
(nil
有不同的语义)。
一个更准确的解决方案是这样的:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
29
检查它的反对零指针,这样
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}
+0
感谢,工程巨大。 – 2010-06-26 00:15:14
+3
我已经添加了一个可能有兴趣的更正的答案。 – 2011-03-11 03:08:12
+1
为什么不只是'if(&UIKeyboardBoundsUserInfoKey){}'? – 2016-01-18 13:54:12
相关问题
- 1. 在运行时检查ObjC属性是否可为空
- 2. SQL检查是否运行了“CHECK CONSTRAINT”?
- 3. 如何检查一个常量是否在晶体中定义
- 4. 如何检查常量是否在主布局中定义?
- 5. 查找是否定义了变量
- 6. ObjC宏 - 我可以包含检查是否在当前范围内定义了一个变量吗?
- 7. 检查异常是否在运行时发生?
- 8. C#检查变量是否定义
- 9. 如何检查变量是否定义?
- 10. Autotabbing&检查变量是否定义
- 11. 如何检查是否定义了django模板变量?
- 12. 如何检查Node.js中是否定义了变量?
- 13. 检查瓶子中是否定义了全局变量
- 14. 如何检查是否定义了一些变量?
- 15. 如何检查常量是否定义,内函数 - php
- 16. 检查一个常量是否已定义
- 17. 检查运行时清单中是否声明了BroadcastReceiver?
- 18. 检查IEnumerable是否为ValueType(运行时)
- 19. iPhone,检查是否存在常量
- 20. 检查类常量是否存在
- 21. 检查是否CountDownTimer运行
- 22. 检查tomcat是否运行?
- 23. 检查定时器是否正在运行
- 24. 在@Transactional注释中指定回滚检查异常时,是否会在运行时异常时回滚Spring
- 25. 检查是否定义宏
- 26. 检查是否值是很多常量
- 27. 常量运算是否在运行时评估?
- 28. 检测是否Qt是在运行时
- 29. 检查在运行时是否正在执行某个方法
- 30. 三元运算符是否在常量定义中工作?
为什么不使用'#ifdef'? – 2014-10-29 11:56:47
@lulian #ifdef使用#define'd宏https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html除OP之外请求运行时检查,#ifdef不会这样做。 – Emanuel 2015-03-10 18:51:16