Ich versuche dynamisch eine Swift-Klasse zu laden, die von NSObject
mit der Objc-Laufzeit erbt. (Ich versuche, die Klasse von ObjC, nicht von Swift zu laden)objc_getClass: load Swift-Klasse erbt NSObject
Meine Swift-Klasse: Die
@objc public class TestClass : NSObject {
@objc public func testMethod() -> String {
return "String"
}
}
Laut Apple Dokumentation,
Das
@objc
Attribut macht Swift API verfügbar in Objective-C und Objective-C-Laufzeit
Aber das Ergebnis von objc_getClass("TestClass")
ist (null)
.
Mache ich etwas falsch? Oder ist es überhaupt nicht möglich, Swift-Klassen zu laden, die eine ObjC-Klasse mit der Objc-Laufzeit erben?
Wenn Sie 'print (TestClass.className())' (ohne Angabe eines Objective-C-Namens) ausführen, wird "objc_class_name.TestClass" ausgegeben, was Sie mit 'objc_getClass' verwenden können. Es ist also mit der Laufzeit registriert, es hat nur einen vorangestellten Namen. – Hamish
@Hamish ooh Ich wusste das nicht. Vielen Dank! Ich werde meine Antwort bearbeiten. – JAL
@Hamish Hmm, 'TestClass.className()' kompiliert nicht für mich (Swift 3). – JAL