Swift之Self、self

self我知道,Self是什么鬼?其实Self我们会时不时遇到的,只是我们没有注意而已。

Self

Self其实主要使用在协议中:

protocol ProtocolTest {
    // 协议定一个方法,接受实现该协议的自身类型并返回一个同样的类型
    func testMethod(c: Self) -> Self
    
    //Self 不仅指代的是实现该协议的类型本身,也包括了这个类型的子类
}

// 当这个协议被UIView或者UIView子类使用的时候,默认实现testMethod方法,后续实现类可以再进行重写。
extension ProtocolTest where Self: UIView{
     func testMethod(c: Self) -> Self {
         return c
     }
}

self

除了指向当前类或者结构体对象外,self还可以获取当前类的元类型

  • Class.self: Class.Type当前类的元类型

元类型还可以通过type(of:Class())来获取
.self 取到的是静态的元类型,声明的时候是什么类型就是什么类型。type(of:)取的是运行时候的元类型,也就是这个实例 的类型。

  • class().self: class()当前对象
    用法可以结合https://www.jianshu.com/p/ee5feb763fce来看。

你可能感兴趣的:(Swift之Self、self)