Para, por ejemplo, acceder a las variables en un NSDictionary
Las estructuras de cacao a menudo definen claves, como UIKeyboardBoundsUserInfoKey
. ¿Cómo puedo verificar si una clave está definida en tiempo de ejecución? Encontré ejemplos sobre cómo buscar clases y funciones, pero no para constantes.Compruebe si la constante se define en tiempo de ejecución en Obj-C
Respuesta
de Jasarien es más o menos correcta, pero es propenso a problemas menores de LLVM 1.5, donde el compilador optimizar la sentencia if distancia.
También debería estar comparando la dirección de la constante con NULL
, en lugar de nil
(nil
tiene una semántica diferente).
Una solución más precisa es la siguiente:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
Compruebe que es puntero nulo en contra, como respuesta este
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}
Gracias, funciona muy bien. –
Agregué una respuesta con una corrección que podría ser de interés. –
¿Por qué no simplemente 'if (& UIKeyboardBoundsUserInfoKey) {}'? –
- 1. iPhone, compruebe la existencia de constante
- 2. ¿Cómo se define un objeto C# en tiempo de ejecución?
- 3. Compruebe si se define un objeto, mejor práctica.
- 4. ¿Cómo se define la constante en el constructor de clase?
- 5. No es seguro buscar datos de tiempo de ejecución objc
- 6. java Proceso en tiempo de ejecución: compruebe si está esperando la entrada
- 7. Delphi: compruebe si la memoria se está liberando "a tiempo"
- 8. ¿Cómo se define una constante BOOL?
- 9. ¿Cómo puedo encontrar dónde se define una constante en Ruby?
- 10. define constante doble como hexadecimal?
- 11. ¿Cómo encontrar dónde se define un método en tiempo de ejecución?
- 12. verificación de iPhone para una constante en tiempo de ejecución en la aplicación universal
- 13. Compruebe si el tiempo frontal está habilitado en el dispositivo
- 14. Ejemplo de cómo se ejecuta la implementación de Objective-C @ try- @ catch en tiempo de ejecución?
- 15. Compruebe si la salida se redirige
- 16. compiladores en línea/tiempo de ejecución para Java, C++, Python y ObjC?
- 17. compruebe si se completa la descarga
- 18. Detección constante en tiempo de compilación en C++
- 19. Clojure rseq en tiempo constante?
- 20. comprobando si se define un método en la clase
- 21. Selenio: compruebe si se muestra una imagen en la página
- 22. Compruebe si la propiedad se ha configurado en phing
- 23. ¿Cómo se define la constante de miembro de tipo en F #?
- 24. Magento - compruebe si en la página cms
- 25. ¿Cómo comprobar si estoy en tiempo de ejecución o diseño?
- 26. Cambiar la orientación en tiempo de ejecución
- 27. Tiempo de compilación compruebe si una clase base es "interfaz"
- 28. ¿Cómo se define la matriz constante en GLSL (OpenGL ES 2.0)?
- 29. Compruebe si se admite el esquema de URL en javascript
- 30. Primera llamada a un controlador, se define constante, Segunda llamada, "Oauth constante no inicializada"?
¿Por qué no usar '# ifdef'? –
@lulian #ifdef funciona con # macros definidas https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html además de OP pidió un control en tiempo de ejecución, que #ifdef no hará. – Emanuel