objcランタイムを使用してNSObject
から継承するSwiftクラスを動的にロードしようとしています。objc_getClass:NSObjectを継承するswiftクラスをロードする
@objc
属性は、あなたのスウィフトAPIを利用できるようになり、Appleのドキュメントによると@objc public class TestClass : NSObject { @objc public func testMethod() -> String { return "String" } }
:
マイスウィフトクラス(私はにObjCから、ではないスウィフトからクラスをロードしようとしています) Objective-CおよびObjective-Cランタイムで
しかし、objc_getClass("TestClass")
の結果はです3210。
何か間違っていますか?または、objcランタイムを使用してObjCクラスを継承する迅速なクラスをロードすることはまったく不可能ですか?
実際に 'print(TestClass.className())'(Objective-Cの名前を指定しない)を実行すると、 'objc_class_name.TestClass 'が出力されます。これは' objc_getClass'で使用できます。したがって、ランタイムに登録されています。接頭辞付きの名前だけです。 – Hamish
@ハミッシュ・オー私はそれを知らなかった。ありがとう!私は私の答えを編集します。 – JAL
@Hamish Hmm、 'TestClass.className()'は私のためにコンパイルされません(Swift 3)。 – JAL