Swift通过类名动态创建对象的方式
前言最近一些朋友问到我在Swift中如何通过类字符串名称的方式创建类实例的问题,起初以为与
先看ObjC中的方式我们可以通过Class类型就可以调用alloc来分配内存,调用init方法来初始化。如: Class cl = NSClassFromString(@"ViewController");
UIViewController *vc = [[cl alloc] init];
通常我们这么写法是用于循环创建的场景,通过公共基类接收,就可以指向所创建的对应的类名称的内存。 Swift中的方式今天是由于一位朋友突然询问我这么一个问题:
看看下面的方式: var str = NSString.self()// 或者NSString.self.init()
str = "TestNSString"
print(str)
下面我们定义一个类: class MyClass: NSObject {
var member = 10
override required init() {
print("init")
}
}
我们定义的类是继承于NSObject,这时我们这么测试: // 打印出10
print( MyClass.self().member)
说明继承于NSObject后, 调用self()就可以创建对象了。 另外,我们使用NSClassFromString来创建试试: let className = NSStringFromClass(MyClass)
print(className)
let classType = NSClassFromString(className) as? MyClass.Type
if let type = classType {
let my = type.init()
print(my.member)
}
第一个打印就打印出 我们还可以通过MyClass.self.init()来创建对象, 注意:所创建的 总结:在Swift中,要创建对象有以下几种方式:
此处省略10000字…请移步微信公众号阅读全文
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |