Looking for swift Keywords? Try Ask4Keywords

Swift LanguageMethode Swizzling


Bemerkungen

Wenn Sie die Methode swizzling in Swift verwenden, müssen Ihre Klassen / Methoden zwei Anforderungen erfüllen:

  • Ihre Klasse muss NSObject
  • Die Funktionen, die Sie umschalten möchten, müssen das dynamic Attribut haben

Eine vollständige Erklärung, warum dies erforderlich ist, finden Sie unter Verwenden von Swift mit Cocoa und Objective-C :

Dynamischer Versand erforderlich

Das @objc Attribut macht Ihre Swift-API für die Objective-C-Laufzeit @objc , garantiert jedoch nicht das dynamische Senden von Eigenschaften, Methoden, Subskriptionen oder Initialisierungen. Der Swift-Compiler kann weiterhin Mitgliederzugriffe vornehmen oder integrieren, um die Leistung Ihres Codes unter Umgehung der Objective-C-Laufzeit zu optimieren . Wenn Sie eine Memberdeklaration mit dem dynamic Modifizierer markieren, wird der Zugriff auf dieses Member immer dynamisch ausgelöst. Da Deklarationen, die mit dem dynamic Modifizierer markiert sind, über die Objective-C-Laufzeit @objc werden, werden sie implizit mit dem @objc Attribut gekennzeichnet.

Das Anfordern eines dynamischen Versandes ist selten notwendig. Sie müssen jedoch den dynamic Modifikator verwenden, wenn Sie wissen, dass die Implementierung einer API zur Laufzeit ersetzt wird . Sie können beispielsweise die Funktion method_exchangeImplementations in der Objective-C-Laufzeit verwenden, um die Implementierung einer Methode method_exchangeImplementations , während eine App ausgeführt wird. Wenn der Swift-Compiler die Implementierung der Methode einleitete oder den Zugriff darauf verschlechterte, würde die neue Implementierung nicht verwendet .

Links

Objective-C-Laufzeitreferenz

Methode Swizzling auf NSHipster

Methode Swizzling Verwandte Beispiele