Vererbt von einer Swift-Klasse in Ziel C

8

Ich vermische erfolgreich Obj-C und Swift in einem Xcode 7-Projekt. Allerdings kann ich nicht herausfinden, wie ich in einer Objective-C-Klasse von einer Swift-Klasse erben soll (und ja, ich weiß, dass ich die Swift-Klasse als @objc für Sichtbarkeit deklariere). In diesem Fall ist die gewünschte Swift-Oberklasse MySwiftViewController eine Unterklasse von UIViewController . Momentan erben wir in Obj-C direkt von UIViewController und haben keinen Zugriff auf die Funktionen, die ich in MySwiftViewController hinzugefügt habe.

Folgendes verstehe ich:

- Um zu deklarieren, dass eine Obj-C-Klasse von etwas erbt, das sich nach dem ':' in der .h-Datei befinden muss:

%Vor%

- Um Swift-Klassen sichtbar zu machen, ist das #import ed:

%Vor%

Sie können jedoch den automatisch generierten Bridging-Header von Swift nicht in die Obj-C .h -Datei importieren. Sie können auch keine undurchsichtige Oberklasse mit @class weiterleiten. Also, ist das möglich und wie?

    
BaseZen 06.02.2016, 18:12
quelle

2 Antworten

21

Leider ist es nicht möglich, eine Swift-Klasse in Objective-C zu unterklassifizieren. Direkt aus der Dokumentation:

  

Sie können in Objective-C keine Swift-Klasse ableiten.

Siehe Apples Anleitung zur Interoperabilität für weitere Informationen darüber, worauf Sie mit Objective-C zugreifen können und was nicht.

    
Edward Jiang 06.02.2016, 18:19
quelle
3

Wie für Xcode 8.0 und früher gibt es eine Dirty-Hacky-Lösung, die wahrscheinlich in der Zukunft behoben wird.

Wenn Sie eine Unterklasse von swift-Datei erstellen möchten, können Sie objc_subclassing_restricted attribute hinzufügen. Sie können es als Makro für die Bequemlichkeit machen. Code:

Schnelle Klasse.

%Vor%

Objc-Klasse:

%Vor%

Aber wie ich verstehe, wird es nicht unterstützt, und Sie haben vielleicht irgendwelche Fehler. Es ist also kein Leitfaden zum Handeln und eher wie ein seltsames Wissen.

    
Alfred Zien 13.10.2016 14:18
quelle

Tags und Links