Kann ich auf irgendeine Weise testen, ob in Objective-C eine Methode vorhanden ist?
Ich versuche, einen Schutz hinzuzufügen, um festzustellen, ob mein Objekt über die Methode verfügt, bevor ich es aufrufe.
objective-c
teepusink
quelle
quelle
- forwardInvocation:
).Antworten:
quelle
Es gibt auch den statischen NachrichteninstanzenRespondToSelector : (SEL) -Selektor Sie würden ihn so nennen:
oder so:
Dies kann nützlich sein, wenn Sie abhängig davon einen oder einen anderen Konstruktor aufrufen möchten (ich meine, bevor Sie die Instanz selbst haben).
quelle
Verwenden Sie
respondsToSelector:
. Aus der Dokumentation :quelle
Sie suchen nach AntwortenToSelector: -
Wie Donal sagt, sagt Ihnen das Obige, dass foo definitiv mit dem Empfang des Balkenwählers umgehen kann . Wenn foo jedoch ein Proxy ist, der Balken an ein zugrunde liegendes Objekt weiterleitet, das die Balkennachricht empfängt, antwortetToSelector: NEIN, obwohl die Nachricht an ein Objekt weitergeleitet wird, das auf Balken antwortet.
quelle
Das Überprüfen von Selektoren mit responsondsToSelector gilt normalerweise nur für Delegatmethoden. Sie sollten nicht forwardInvocation oder Proxys für Delegatmethoden verwenden. Wenn Sie respondsToSelector in anderen Situationen verwenden müssen, möchten Sie möglicherweise sicherstellen, dass es keine geeignetere Methode zum Entwerfen Ihres Programms gibt.
quelle