美文网首页
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