一尘不染

为什么关键字“弱”仅适用于类和类绑定的协议类型

swift

当我weak在Swift中声明变量时,有时会从Xcode收到错误消息:

“弱”仅可应用于类和类绑定协议类型

我只是想知道为什么关键字weak只能应用于类和类绑定的协议类型?背后的原因是什么?


阅读 200

收藏
2020-07-07

共1个答案

一尘不染

weak是引用类型的限定符(与structs和内置值类型等值类型相反)。

引用类型使您可以对同一对象有多个引用。当最后一个强引用停止引用该对象时,该对象将被释放(弱引用不计算在内)。

另一方面,值类型是按副本分配的。引用计数不适用,因此weak修饰符对它们没有意义。

2020-07-07