Ad esempio, le variabili di accesso in un framework NSDictionary
spesso definiscono chiavi, ad esempio UIKeyboardBoundsUserInfoKey
. Come posso verificare se una chiave è definita in fase di runtime? Ho trovato esempi su come verificare le classi e le funzioni, ma non per le costanti.Verificare se la costante è definita in fase di esecuzione in Obj-C
risposta
di Jasarien è più o meno corretto, ma è soggetto a problemi sotto LLVM 1.5 dove il compilatore di ottimizzare il se-dichiarazione distanza.
Si dovrebbe anche confrontare l'indirizzo della costante a NULL
, anziché nil
(nil
ha semantica diversa).
Una soluzione più accurata è questo:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
Controllare che sia puntatore contro nil, come risposta questa
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}
Grazie, funziona alla grande. –
Ho aggiunto una risposta con una correzione che potrebbe essere di interesse. –
Perché non solo 'if (& UIKeyboardBoundsUserInfoKey) {}'? –
- 1. Verifica se una costante è già definita
- 2. Come verificare se sono in fase di esecuzione o in fase di progettazione?
- 3. Come verificare se l'elemento è attualmente in fase di trascinamento
- 4. Come verificare se una variabile è definita in Octave?
- 5. controllo se la visualizzazione viene caricato in fase di esecuzione
- 6. Come posso verificare se una variabile è definita in rotaie?
- 7. Come verificare se la variabile del modello django è definita?
- 8. android: come verificare se l'applicazione è in esecuzione in background
- 9. Come verificare se esiste un cmdlet in PowerShell in fase di esecuzione tramite script
- 10. FederatedAuthentication.WSFederationAuthenticationModule è nullo in fase di esecuzione
- 11. Rilevamento costante in fase di compilazione C++
- 12. Come verificare se un'applicazione WPF è già in esecuzione?
- 13. Come verificare se un'attività è in esecuzione o meno
- 14. Come verificare se Celery/Supervisor è in esecuzione usando Python
- 15. Verificare se è in esecuzione un server SQL collegato
- 16. Come verificare se Kafka Server è in esecuzione?
- 17. Come verificare se JBoss è in esecuzione sul server Unix?
- 18. Come verificare se nginx è in esecuzione o no?
- 19. Come verificare se mongo db è in esecuzione su Mac?
- 20. Verificare se un servizio Windows è in esecuzione?
- 21. Come verificare se un processo è in esecuzione utilizzando Delphi?
- 22. Come verificare se SQL Server Agent è in esecuzione
- 23. Conversione di una stringa in un costante definita in PHP
- 24. Controllo iPhone per una costante in fase di esecuzione nell'app universale
- 25. Verificare la disponibilità di blocchi in fase di esecuzione su iOS
- 26. Qual è il tipo di dati di una costante definita?
- 27. Cambiare l'orientamento in fase di esecuzione
- 28. Verifica se l'applicazione è in esecuzione - InstallJammer
- 29. Verificare se l'attività è già in esecuzione prima di iniziare la nuova
- 30. ANDROID - come verificare se l'animazione è in esecuzione prima di avviare la nuova animazione
Perché non utilizzare '# ifdef'? –
@lulian #ifdef funziona con # define'd macros https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html inoltre OP chiede un controllo runtime, che #ifdef non farà. – Emanuel