Czy istnieje sposób na sprawdzenie, czy metoda istnieje w Objective-C?
Próbuję dodać strażnika, aby sprawdzić, czy mój obiekt ma metodę przed jej wywołaniem.
objective-c
teepusink
źródło
źródło
- forwardInvocation:
).Odpowiedzi:
źródło
Istnieją również statyczne instancje wiadomościRespondToSelector : (SEL) selector Można to nazwać tak:
lub tak:
Może to być przydatne, jeśli chciałbyś wywołać jednego konstruktora lub innego w zależności od tego (mam na myśli, zanim będziesz mieć samą instancję).
źródło
Użyj
respondsToSelector:
. Z dokumentacji :źródło
Szukasz odpowiedziToSelector: -
Jak mówi Donal, powyższe mówi ci, że foo zdecydowanie poradzi sobie z otrzymaniem selektora paska. Jednakże, jeśli foo jest proxy, które przekazuje bar do jakiegoś bazowego obiektu, który otrzyma komunikat bar, to respondsToSelector: powie Ci NIE, nawet jeśli wiadomość zostanie przekazana do obiektu, który odpowiada na bar.
źródło
Sprawdzanie selektorów za pomocą respondsToSelector jest zwykle tylko dla metod delegata. Nie należy używać forwardInvocation ani serwerów proxy dla metod delegatów. Jeśli potrzebujesz użyć respondsToSelector w innych sytuacjach, możesz upewnić się, że nie ma bardziej odpowiedniego sposobu projektowania programu.
źródło