swift中.type .self、any、anyObject

这篇文章介绍的还行

.type

代表一个X元类型 Int.Type 就是Int的元类型

class SearchViewController: UIViewController {
    
}
class MessageViewController: UIViewController {
    
}
 
let vcTypes: [AnyClass] = [SearchViewController.self,
                           MessageViewController.self]
 
func setupViewControllers(_ vcTypes: [AnyClass]) {
    for vcType in vcTypes {
        if vcType is UIViewController.Type {
            let vc = (vcType as! UIViewController.Type).init()
            print(vc)
        }
    }
}
 
setupViewControllers(vcTypes)

.self

获取一个元类型指针,元类型的值
用在类型后面取得类型本身,获得一个表示该类型的值
用在某个实例后面取得这个实例本身

在 Cocoa API中我们经常遇到需要输入一个AnyClass,我们应该使用.self的方式来获取对应的类型。如注册tableView的可重用cell时:
 tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
 

AnyClass

仅是一个别名
typealias AnyClass = AnyObject.Type

Any

空协议集合的别名,没有实现任何协议,可以是任何类型、包括类实例与结构体实例、类、枚举、结构体、函数等
typealias Any = protocol<>

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()

AnyObject

一个没有声明任何成员的空协议。
表示任意类类型,可以代表任意类类型的实例
var anyObject:AnyObject = Student()
anyObject = UIView()

Any表示一个空的协议集合,AnyObject是一个协议,Any是0个协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值