Um zum Beispiel den Zugriff Variablen in einem NSDictionary
Cocoa Frameworks oft Schlüssel, wie UIKeyboardBoundsUserInfoKey
definieren. Wie kann ich prüfen, ob zur Laufzeit ein Schlüssel definiert ist? Ich habe Beispiele gefunden, wie man nach Klassen und Funktionen sucht, aber nicht nach Konstanten.Prüfen, ob konstant wird zur Laufzeit in Obj-C definiert
Antwort
Antwort Jasarien das ist ungefähr richtig, aber ist anfällig für Probleme unter LLVM 1.5, wo der Compiler die if-Anweisung entfernt werden optimiert.
Sie sollten auch die Adresse der Konstante mit NULL
vergleichen, anstatt nil
(nil
hat andere Semantik).
Eine genauere Lösung ist dies:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
prüfen ist es Zeiger gegen null, wie dieses
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}
Danke, funktioniert gut. –
Ich habe eine Antwort mit einer Korrektur hinzugefügt, die von Interesse sein könnte. –
Warum nicht einfach 'if (& UIKeyboardBoundsUserInfoKey) {}'? –
- 1. Prüfen, ob das Anrufergebnis nicht definiert ist
- 2. TypeScript - Modul ist zur Laufzeit nicht definiert
- 3. Prüfen, ob eine Variable definiert ist?
- 4. MouseEvent.RIGHT_CLICK ist zur Laufzeit nicht definiert?
- 5. Prüfen, ob UIView berührt wird?
- 6. Prüfen, ob Unicode-Zeichen in Swift definiert ist
- 7. TD wird zur Laufzeit erweitert
- 8. Laufzeit auf Glühlampen prüfen?
- 9. Prüfen, ob ein Wert in einem C enum definiert ist?
- 10. Programmgesteuert prüfen, ob ein Linux-Kernel-Modul zur Laufzeit existiert oder nicht
- 11. Prüfen auf Verfügbarkeit von Blöcken zur Laufzeit auf iOS
- 12. Prüfen, ob PropertyInfo.SetValue wird ein Argument werfen
- 13. Präprozessor prüfen, ob mehrere Definitionen nicht definiert sind
- 14. Gradle Aufgabe prüfen, ob die Eigenschaft definiert ist
- 15. Prüfen, ob ein HTML5-Videoelement wiedergegeben wird
- 16. Prüfen Sie, welche OpenGL-Engine von Qt zur Laufzeit für die Freigabe verwendet wird, baut
- 17. Wie definiert man ein C# -Objekt zur Laufzeit?
- 18. Farbe Stil wird zur Laufzeit nicht
- 19. NIB-Datei wird nicht zur Laufzeit angezeigt
- 20. Spring Data Elasticsearch @Document indexName zur Laufzeit definiert
- 21. Animation zur Laufzeit hinzufügen
- 22. prüfen, ob die Funktion in Kotlin leer
- 23. Ansible prüfen, ob Wörterbuch existiert
- 24. Aufrufmethode zur Laufzeit
- 25. Android: Anfrage zur Laufzeit
- 26. Prüfen, ob eine Datenbank verfügbar ist?
- 27. Übersteuerung zur Laufzeit __setattr__
- 28. wie Kanalnamen zur Laufzeit in springxd bekommen
- 29. Wie überprüft man, ob EnableViewStateMac zur Laufzeit gesetzt ist?
- 30. prüfen, ob es eine Verbindung zur Datenbank asp.net/c#
Warum mit '# ifdef' nicht? –
@lulian #ifdef arbeitet mit # define'd Makros https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html neben OP für eine Laufzeitprüfung gefragt, die #ifdef nicht tun. – Emanuel