據我所知,在Swift中的反射尚不可用。我目前正在將Objective-C代碼轉換爲swift以提高性能(我注意到了相當大的差異)。使用反射的調用方法
現在我需要的是一種使用反射來調用Method的方法。該方法需要調用的對象擴展爲NSObject
以使該類能夠使用以下代碼進行解析;
let clazz = NSClassFromString("MyProject.DynamicClass") as NSObject.Type;
let clazzInstance = clazz() as! NSObject;
我能夠使用下面的代碼檢索參數的數量和引用方法;
let selectorMethod = Selector("myCustomMethod:");
let numberOfArguments : UInt32 = method_getNumberOfArguments(selectorMethod);
let referenceToMethod : Method = class_getInstanceMethod(clazz, selector!);
但是,如何使用/致電referenceToMethod
?
附加
我也打過電話performSelector但這已完全刪除斯威夫特2.我也想避免使用任何@objc
屬性/註解。
請問爲什麼你絕對需要反思?你的用例的一個例子?我相信幾乎所有東西都可以在編譯時用Swift靜態完成,這就是Swift的全部內容 – Kametrixom
我沒有一個代碼示例atm,但是例如我想從一個可以指定的「框架」中加載一個模塊動態地從UI代碼中調用,無需程序員知道哪些模塊可用,因爲可以稍後由其他人添加模塊。 – Thys