美文网首页
iOS Swift类与结构体

iOS Swift类与结构体

作者: TerryDev | 来源:发表于2021-12-27 17:19 被阅读0次
    抓到耗子就是好喵.jpeg

    类与结构体相同点(🤷🏻)

    • 定义方法、属性、初始化器
    • 定义下标提供对其值的访问
    • 使用扩展 extension
    • 遵循协议提供标准功能

    两者区别

    结构体是值类型(Value Type),类是引用类型(Reference Type)

    上代码

    struct RGB {
        var red   = 0.0
        var green = 0.0
        var blue  = 0.0
    }
    
    let color = RGB()
    var newColor = color
    newColor.red = 250.0
    print("color rgb red value:\(color.red)")
    print("newColor rgb red value:\(newColor.red)")
    
    输出结果:
    
    color rgb red value:0.0
    newColor rgb red value:250.0
    

    对于结构体而言,存储在color中的值被赋值给了新的实例newColor上,两个独立的实例包含相同的数值,由于是两个独立的实例,所以当newColor修改red 值的时候,不会对color造成影响。

    对于类

    class Person {
        var name:String?
        var age = 0
    }
    
    let person = Person()
    person.name = "Terry"
    person.age = 20
    
    let anotherPerson = person
    anotherPerson.age = 18
    print("person age :\(person.age)")
    print("anotherPerson age :\(anotherPerson.age)")
    
    输出结果:
    person age :18
    anotherPerson age :18
    

    Person类为引用类型,person的age和anotherPerson的age指向同一个对象,anotherPerson的age修改了,person的age也随之更改。

    结构体的优点

    • 适用于复制操作
    • 更快更安全,无需担心内存泄漏、多线程冲突

    类具有结构体不具备的功能

    • 类有继承特性,子类可以使用父类的特性和方法,而结构体没有继承特性
    • 类型转换:在runtime检查和解释实例类型
    • 可以通过deinit释放任何已分配的资源
    • 类的实例可以被多次引用

    以上就是类和结构体的异同
    参考 Swift官方文档

    相关文章

      网友评论

          本文标题:iOS Swift类与结构体

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