Ich bin etwas verwirrt in Bezug auf performSelector . Ich google schon. aber nicht klar für mich. Jeder kann die Rolle von performSelector erklären.
Danke
%Vor%und
%Vor% beide sind gut für mich. Was ist der Unterschied zwischen diesen beiden? [self btnClicked]
und [self performSelector:@selector(btnClicked)]
;
Die beiden sind ziemlich identisch, wenn sie verwendet werden, wie Sie gezeigt haben, aber Letzteres hat den Vorteil, dass Sie dynamisch bestimmen können, welcher Selektor zur Laufzeit aufgerufen werden soll.
%Vor%Apple Doc ist dein Freund.
Es
Sendet eine bestimmte Nachricht an den Empfänger und gibt das Ergebnis von zurück die Nachricht.
Insbesondere:
Die Methode
%Vor%performSelector:
entspricht dem Senden eines aSelectors Nachricht direkt an den Empfänger . Zum Beispiel alle drei der Die folgenden Nachrichten machen dasselbe:Mit der performSelector: Methode können Sie jedoch Nachrichten senden, die werden erst zur Laufzeit festgelegt . Ein Variablenselektor kann als übergeben werden das Argument:
%Vor%Das Argument aSelector sollte eine Methode identifizieren, die nein akzeptiert Argumente. Verwenden Sie für Methoden, die etwas anderes als ein Objekt zurückgeben NSInvocation.
Ich hoffe, das hilft.
Mit einem selector
-Objekt können Sie eine Methode aufrufen, die Sie zum Zeitpunkt der Kompilierung nicht kennen. Sie müssen nur den Namen einer Methode als Zeichenfolge kennen, um sie aufzurufen.
Wenn der Name der Methode, die Sie aufrufen, zur Kompilierungszeit bekannt ist, ist die Verwendung von Selektoren kontraproduktiv: Der Code wird ohne erkennbaren Vorteil weniger lesbar. Wenn Sie eine Bibliothek schreiben, die Methoden in anderem Code aufrufen muss, der separat von der Bibliothek kompiliert wird, bieten Selektoren eine Möglichkeit, die beiden Codeabschnitte zu entkoppeln.
Wenn Sie beispielsweise eine Timer-Klasse schreiben, die Sie nach Ablauf eines Zeitintervalls zurückrufen kann, kennt Ihr Timer den Namen der Funktion, die er aufrufen muss, nicht. Daher kann er nicht schreiben:
%Vor%Aber wenn Sie Ihrem Timer einen Selektor geben, könnte der Timer Sie zurückrufen.
%Vor%Mit PerformSelector können Sie entscheiden, welche Nachricht zur Laufzeit übergeben wird (späte Bindung), im Gegensatz zu Sprachen wie Ebene C. Wenn Sie den Namen einer Methode in einer objektiven C-Klasse kennen, können Sie
verwenden %Vor%Um eine Zeichenkette in einen Selektor umzuwandeln, rufen Sie Ihre Klasse mit performSelector auf. Auf diese Weise können Sie verschiedene Funktionen auswählen, die während der Laufzeit aufgerufen werden. Sie können sogar auswählen, welche Funktion mit einer Konfigurationsdatei aufgerufen werden soll.
Tags und Links objective-c ios