Überprüfen Sie, ob eine Methode existiert
Gibt es eine Möglichkeit, ich kann testen, ob eine Methode existiert in Objective-C?
Ich versuche, fügen Sie eine Wache, um zu sehen, ob mein Objekt der Methode vor dem Aufruf.
Kommentar zu dem Problem
Es ist auch die Frage, ob dies die richtige Vorgehensweise ist in den ersten Platz, da Objective-C-Klassen können reagieren, zu Selektoren, die Sie noch nicht deklariert wurde (über
- forwardInvocation:
). InformationsquelleAutor der Frage teepusink | 2010-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort kennytm
Gibt es auch die statischen Nachricht instancesRespondToSelector:(SEL)selector
Sie würde es so nennen:
oder so:
Dies kann nützlich sein, wenn Sie aufrufen möchten einen Konstruktor oder ein anderes abhängig (ich meine, bevor er die Instanz selbst).
InformationsquelleAutor der Antwort Ricard Pérez del Campo
Verwenden
respondsToSelector:
. Aus der Dokumentation:InformationsquelleAutor der Antwort Carl Norum
Du suchst respondsToSelector:-
Als Donal sagt den oben erzählt Sie, dass foo kann definitiv Griff Erhalt der bar-Auswahl. Wenn jedoch foo ist ein proxy, der leitet die bar, um einige zugrunde liegende Objekt, das erhalten werden bar Nachricht respondsToSelector: sagen Sie NEIN, auch wenn die Nachricht weitergeleitet wird, um ein Objekt reagiert, dass Sie zur bar.
InformationsquelleAutor der Antwort Frank Shearar
Überprüfung der Selektoren mit respondsToSelector ist in der Regel nur für delegate-Methoden. Sie sollten nicht mit forwardInvocation oder proxies für delegate-Methoden. Wenn Sie verwenden müssen, respondsToSelector in anderen Situationen möchten Sie vielleicht, um sicherzustellen, dass es nicht einen besser geeigneten Weg, um Ihr Programm entwerfen.
InformationsquelleAutor der Antwort Eric