ios-需要掌握的知识点

iOS 类与结构体的区别

2019-04-22  本文已影响6人  A_rcher34

swift中,类是引用类型,结构体是值类型。值类型在传递和赋值时将进行复制,而引用类型则只会复制指针。这是两者之间的区别就是两个类型的区别。

举例:

class Temperature {
  var value: Float = 37.0
}

class Person {
  var temp: Temperature?

  func sick() {
    temp?.value = 41.0
  }
}

let A = Person()
let B = Person()
let temp = Temperature()

A.temp = temp
B.temp = temp

执行A.sick()
A与B的temp的值都为41

因为Temperature是class,为引用类型,所以A与B的temp都指向了一个地址。当A的temp修改时,B的temp随之改变。如果Temperature的类型改为struct,就会为值类型,则A与B之间的temp不会相互影响。

内存中,引用类型(例如类)是存在堆上,而值类型(例如结构体)是存在栈上。栈比堆的速度快很多,所以苹果官方推荐使用结构体,可以提高APP运行的效率。

class的功能:

struct的功能:

修改成员变量的方法:

参考文献

上一篇 下一篇

猜你喜欢

热点阅读