Aby na przykład uzyskać dostęp do zmiennych w ramach NSDictionary
, często definiuje się klucze, takie jak UIKeyboardBoundsUserInfoKey
. Jak mogę sprawdzić, czy klucz jest zdefiniowany w środowisku wykonawczym? Znalazłem przykłady sprawdzania klas i funkcji, ale nie stałych.Sprawdź, czy stała jest zdefiniowana w czasie wykonywania w Obj-C
Odpowiedz
Jasarien jest grubsza poprawne, ale jest podatny na problemy pod LLVM 1.5 gdzie kompilator zoptymalizuje IF-oświadczenie z dala.
Powinieneś także porównywać adres stałej do NULL
, a nie nil
(nil
ma inną semantykę).
Bardziej dokładne rozwiązanie to:
BOOL isKeyboardBoundsKeyAvailable = (&UIKeyboardBoundsUserInfoKey != NULL);
if (isKeyboardBoundsKeyAvailable) {
// UIKeyboardBoundsUserInfoKey defined
}
Sprawdź to wskaźnik na zero, jak odpowiedzieć na to
if (&UIKeyboardBoundsUserInfoKey != nil)
{
//Key exists
}
Dzięki, działa świetnie. –
Dodałem odpowiedź z poprawką, która może być interesująca. –
Dlaczego nie tylko 'if (& UIKeyboardBoundsUserInfoKey) {}'? –
- 1. Sprawdź, czy stała jest już zdefiniowana
- 2. Sprawdź, czy widok jest ładowany w czasie wykonywania
- 3. Sprawdź, czy zmienna jest zdefiniowana w javascript?
- 4. Jak sprawdzić, czy stała jest zdefiniowana w Crystal
- 5. Sprawdź, czy została zdefiniowana metoda.
- 6. Sprawdź, czy zmienna jest zdefiniowana w języku szablonowania django.
- 7. Czy można oglądać zmienne w czasie wykonywania?
- 8. czy można zastąpić metodę w czasie wykonywania?
- 9. TypeScript - Moduł jest niezdefiniowany w czasie wykonywania
- 10. Czy jest możliwe przeciążenie funkcji w czasie wykonywania?
- 11. Jak ustalić, czy metoda jest asynchroniczna w czasie wykonywania
- 12. Sprawdź, czy iso_c_binding jest dostępne w czasie kompilacji
- 13. metoda wywołania w czasie wykonywania
- 14. Ładowanie XAML w czasie wykonywania?
- 15. Programowo sprawdź, czy moduł jądra Linux istnieje, czy nie, w czasie wykonywania
- 16. Powielanie składników w czasie wykonywania
- 17. Awaria OCMock w czasie wykonywania
- 18. Błąd PHP - stała już zdefiniowana DB_HOST?
- 19. Sprawdź, czy tablica jest pusta w Jinja2
- 20. Czy można zmodyfikować treść metody w czasie wykonywania w .NET?
- 21. Czy mogę wstawić kolumnę w widoku listy w czasie wykonywania?
- 22. PHP defined() dlaczego zwraca false, nawet jeśli stała jest zdefiniowana?
- 23. Czy w PostgreScie jest stała MAX_INT?
- 24. Renderowanie obrazu w czasie wykonywania w WPF
- 25. Rejestrowanie metoda czasie wykonywania
- 26. Narzędzia Java do łączenia wykonywania w czasie wykonywania z pokryciem
- 27. Jak zidentyfikować metodę protokołu jest opcjonalna w czasie wykonywania?
- 28. Żądanie uprawnień administratora w czasie wykonywania
- 29. C++ Przypisywanie wartości stałej w czasie wykonywania?
- 30. Czy mogę opcjonalnie wyłączyć atrybut JsonIgnore w czasie wykonywania?
Dlaczego nie używać '# ifdef'? –
@lulian #ifdef działa z # define'd makrami https://gccnu.nu.org/onlinedocs/cpp/Ifdef.html oprócz OP zażądał sprawdzenia w czasie wykonywania, którego #ifdef nie zrobi. – Emanuel