Swift-反射Mirror及消息派发

2023-04-15  本文已影响0人  Sweet丶

反射是编程语言中一项强大的能力:

一、Swift中的反射功能

Swift中目前通过Mirror来实现反射功能。

func testMirror() {
    let mirror = Mirror(reflecting: ZLCar())
    
    // 展示类型:`struct`、`class`、`enum`、tuple、optional、collection、dictionary、set
    // 闭包的mirror.displayStyle是nil
    print(mirror.displayStyle!)
    
    // 类型名:这里是ZLCar
    print(mirror.subjectType)
    
    // 可以通过children属性来获取内部的子结构
    print(mirror.children)
    for pro in mirror.children {
        // 属性名,属性值
        print("\(pro.label): \(pro.value)")
    }
    
    // 对象父类的mirror
    print(mirror.superclassMirror)
}
二、Swift中的消息派发方式
1. 直接派发
2. 函数表派发
3. 消息派发

想了解更多可以阅读文章
反射 Mirror | Swift 动态性

上一篇 下一篇

猜你喜欢

热点阅读