在swift里面通過類名來創(chuàng)建類
anyClass 是一個(gè)協(xié)議 并不是一個(gè)類 所以并不能給anyClass 或者 anyObject 寫延展 加方法?
嘗試用Runtime來動(dòng)態(tài)創(chuàng)建類
/// 通過創(chuàng)建一個(gè)類
let newClass = objc_allocateClassPair(NSObject.classForCoder(), "MyClass", 0)
// 給類增加一個(gè)方法
method_getImplementation(class_getInstanceMethod(self.classForCoder, Selector("report")))
class_addMethod(newClass, Selector("report"), method_getImplementation(class_getInstanceMethod(self.classForCoder, Selector("report"))) , "v@:")
//注冊(cè)這個(gè)類
objc_registerClassPair(newClass)
這樣雖然可以創(chuàng)建了類 但是還是無法實(shí)例化
網(wǎng)上搜到了方法 用繼承實(shí)現(xiàn)
class MyClass: NSObject {
var member = 10
override required init() {
print("init")
}
}
創(chuàng)建如下
let className = NSStringFromClass(MyClass)
print(className)
let classType = NSClassFromString(className) as? MyClass.Type
if let type = classType {
let my = type.init()
print(my.member)
}
雖然是動(dòng)態(tài)創(chuàng)建,但是其必須使用繼承,不知哪位大神知曉如何不用繼承來實(shí)現(xiàn)動(dòng)態(tài)生成類實(shí)例