为什么iOS没有自动垃圾收集?

S.P*_*.P. 13 iphone garbage-collection objective-c

在iOS上使用Objective-C进行开发时,内存管理当前必须由开发人员执行.一些其他移动平台使用自动垃圾收集来消除管理内存的需要.

在iOS设备上没有使用垃圾收集的原因是什么?

Mor*_*ast 20

垃圾收集的问题是内存使用量会增加直到收集,因此可能会分配更多的内存而不是必需的内存.这对于内存受限且没有交换选项的设备来说很糟糕.

当垃圾收集器运行时,它会扫描堆以查找不再使用的内存,这是一个昂贵的过程,会使设备变慢,直到完成为止.

  • **而且**它反复*做它的事情. (3认同)

Fre*_*eer 10

在WWDC 2011上,Apple解释说他们不希望在他们的移动设备上进行垃圾收集,因为他们希望应用程序能够在充分利用所提供的资源的情况下运行,并具有很大的决定性.与垃圾收集的问题不仅在于对象建立了随着时间的推移,直到垃圾收集踢,但你没有在任何控制时,垃圾收集器会一命呜呼这会导致不确定性的行为,可能会导致速度变慢当你不想要它们时可能会发生.

底线:你不能说,"好的.我知道这些对象将在X点被释放,并且不会与正在发生的其他事件发生冲突."

  • 现在使用[自动引用计数](http://clang.llvm.org/docs/AutomaticReferenceCounting.html),您将获得两全其美:开发人员不再需要担心保留/释放对象,您不需要有一个垃圾收集器进程随机减慢执行速度,你仍然保持相当严格的内存使用控制. (3认同)
  • @Brad:没错!如果您真的想使用MRC(手动参考计数),您可以.您甚至可以合并使用两个引用计数系统的文件. (2认同)