美文网首页
iOS Swift基础之AnyObject & Any & An

iOS Swift基础之AnyObject & Any & An

作者: 一眼万年的星空 | 来源:发表于2021-11-07 22:09 被阅读0次

    前言

    hello,小伙伴们:在忙碌中闲暇之余给大家聊聊swift的知识点,今天给大家带来的是swift中AnyObject & Any & AnyClass知识点,希望对大家有所帮助。

    1. .self

    1. 对象的self 是对象的本身,person 对象的类型是Person类。

    .self

    2. 类的self,是类的本身. Person类的类型是Person.Type

    TypePerson.Type 表示一种新的类型, 是Person 所属于的类型

    2.1 .Type

    Person.Type 表示一种新的类型, 是Person 所属于的类型

    3. type(of:)

    ● 用来获取类的类型
    ● 用来获取对象的类型

    type(of:)
    • 从源码中,断点跟踪反射的源码,其实可以看出获取到对象的类型,实际上就是该对象的metadata的地址:
    type(of:)

    3. 1AnyObject

    可以代表任意类的实例对象 & 类的类型 & 仅类能遵守的协议

    3.1.1. 代表类的实例对象

    class Active {
        var action: String = "run"
    }
    let a = Active()
    let active:AnyObject = a
    
    

    3.12. 代表类的类型

    class Active {
        var action: String = "run"
    }
    
    let active:AnyObject = Active.self
    

    3.2 协议遵守AnyObject,代表仅类能遵守这个协议

    协议遵守AnyObject

    4. AnyClass

    AnyObject的类型,是AnyClass, 代表任意实例的类型,它的源码定义如下:

    public typealias AnyClass = AnyObject.Type
    

    使用:

    let p: AnyClass = type(of: person0)
    let p1: AnyClass = Person.self
    
    

    5. Any

    AnyObject 只能是代表和类相关的,Any 除了和类相关,还可以代表基本数据类型。也就是Any代表任意类型

    let p1: Any = Person.self
    let p4: Any = Person()
    let p2: Any = 10
    let p3: Any = Array<Any>()
    

    青山不改,绿水长流,后会有期,感谢每一位佳人的支持!

    相关文章

      网友评论

          本文标题:iOS Swift基础之AnyObject & Any & An

          本文链接:https://www.haomeiwen.com/subject/nbjyzltx.html