point

AnyClass, Any, AnyClass

Any:可以代表任意类型(枚举、结构体、类,也包括函数类型)
AnyObject:可以代表任意类类型。

class Student {
    func test(){
    }
}

struct size {
    var width:Float
    var height:Float
}
var a:Any = 1.2
a = 10
a = "eeee"
a =  [10,20]
a = UIView()
a = Student()
a = Student().test()

AnyClass:任意元类型
元类型(metadata)就是类型的类型,一个元类型指针存放着类型相关的信息。X.self就可以获得一个元类型指针。

typealias AnyClass = AnyObject.Type

Any代表任意类型;
AnyObject代表任意类类型;
X.self 获取一个元类型指针;
X.Type代表一个X元类型
AnyObject.Type 代表任意元类型;
AnyClass = AnyObject.Type

AnyClass应用

AnyObject.Type 可以通过init()得到一个实例


class Student{
    required init(){}
}
let sType = Student.self
let student = sType.init()
print(student)
根据字符串初始化一个控制器
   func getClassFromString(string:String) -> UIViewController? {
        let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"]as!String
        guard let anyObjectType: AnyClass = NSClassFromString(namespace + "." + "\(string)") else {
            return nil
        }
        let vcType = anyObjectType as! UIViewController.Type
        let vc:UIViewController = vcType.init()
        return vc
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值