自动引用计数是否可用作垃圾收集器?

ADI*_*IMO -1 objective-c automatic-ref-counting

在iOS的最新版本中,Apple已经为Objective-C实现了自动引用计数,但我不明白它的作用.

Tom*_*mmy 12

按照常规约定,在编译时为您自动引用计数插入retainrelease消息到您的代码中.因此,就像你自己手动完成内存管理一样,除了编译器足够智能以便能够为你编写该位,并且更不容易出错.

所以它不是垃圾收集,它更像是一种(非常简单的)静态分析形式.根据下面Catfish_Man提出的警告,您仍然可以获得压倒性的确定性内存管理以及运行时成本的整体变化.

  • 运行时成本的变化并不准确.编译器必须比人类对对象生命周期更加保守,通常会导致大约20%的refcount流失.另一方面,ARC有一些巧妙的技巧,可以避免在许多情况下自动释放,这可以降低内存使用并提高性能.无论是赢还是亏,性能取决于所涉及的确切代码. (3认同)