К примеру, переменные доступа в структурах NSDictionary
Cocoa часто определяют ключи, например UIKeyboardBoundsUserInfoKey
. Как я могу проверить, определен ли ключ во время выполнения? Я нашел примеры того, как проверять классы и функции, но не на константы.
Проверьте, определена ли константа во время выполнения в Obj-C
Ответ 1
Ответ Jasarien примерно правильный, но подвержен проблемам в LLVM 1.5, где компилятор будет оптимизировать if-statement.
Вы также должны сравнивать адрес константы с NULL
, а не nil
(nil
имеет другую семантику).
Более точное решение таково:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
Ответ 2
Проверьте указатель на нуль, например
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}