例如,對於一個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