在swift里面通过类名来创建类

在swift里面通过类名来创建类


anyClass 是一个协议 并不是一个类 所以并不能给anyClass 或者 anyObject 写延展 加方法 

尝试用Runtime来动态创建类

/// 通过创建一个类

let newClass = objc_allocateClassPair(NSObject.classForCoder(), "MyClass", 0)

// 给类增加一个方法

method_getImplementation(class_getInstanceMethod(self.classForCoder, Selector("report")))

class_addMethod(newClass, Selector("report"), method_getImplementation(class_getInstanceMethod(self.classForCoder, Selector("report"))) , "v@:")

//注册这个类

objc_registerClassPair(newClass)

这样虽然可以创建了类 但是还是无法实例化

网上搜到了方法 用继承实现


class MyClass: NSObject {

var member = 10

override required init() {

print("init")

}

}

创建如下

let className = NSStringFromClass(MyClass)

print(className)

let classType = NSClassFromString(className) as? MyClass.Type

if let type = classType {

let my = type.init()

print(my.member)

}

虽然是动态创建,但是其必须使用继承,不知哪位大神知晓如何不用继承来实现动态生成类实例

你可能感兴趣的:(在swift里面通过类名来创建类)