【发布时间】:2017-02-17 23:53:40
【问题描述】:
我认为 ARC 是不时使用的首字母缩写词,但例如在 Rust 中它是“原子引用计数”,而在 Swift 或 ObjC 中他们称之为“自动引用计数”。究竟有什么区别?据我所知,它们的行为方式似乎相同。
【问题讨论】:
标签: swift rust automatic-ref-counting
我认为 ARC 是不时使用的首字母缩写词,但例如在 Rust 中它是“原子引用计数”,而在 Swift 或 ObjC 中他们称之为“自动引用计数”。究竟有什么区别?据我所知,它们的行为方式似乎相同。
【问题讨论】:
标签: swift rust automatic-ref-counting
这其实……完全不同。
在 Rust 方面,我们有 Arc 和 Rc,它们是引用计数指针:
Rc 是简单的引用计数指针:克隆它只会增加一个计数器,当最后一个指向特定数据的Rc 被丢弃时,计数器会下降到 0 并且该数据被丢弃也是。Arc 是它的原子版本,这意味着它是线程安全的,可以跨线程共享(与 Rc 不同)。在 Swift 方面,ARC 指的是自动引用计数,即 Swift 的垃圾收集机制,顾名思义是自动的(并且在代码中不可见)。
【讨论】: