gpt4 book ai didi

iphone - iOS 5 有垃圾收集功能吗?

转载 作者:IT王子 更新时间:2023-10-29 08:02:04 25 4
gpt4 key购买 nike

从 iOS 5 开始,我不再需要担心内存管理问题了吗?此外,所有为 iOS 4 和更早版本编写的程序是否都必须重写以允许 iOS 为您管理内存?

最佳答案

您似乎在谈论其他答案中提到的自动引用计数。 ARC 是一种 GC,因为它自动释放内存,但与优秀的垃圾收集器有许多不同之处。

首先,主要是编译器技术。编译器了解 Cocoa 的引用计数准则,因此它会根据规则将保留和释放插入到它们应该在的位置。它的工作方式就像您自己编写保留和释放一样——它只是为您插入它们。普通垃圾收集器会在程序运行时跟踪程序的内存。

其次,因为它就像 retain 和 release 一样,它不能捕获循环引用(如果对象 A 保留对象 B,对象 B 保留对象 A,并且没有其他引用它们中的任何一个,它们都成为不朽的)。您需要采取相同的预防措施来防止它们。

它使用资源的方式也不同于自动垃圾收集器。与 Objective-C 一起使用的垃圾收集器必须扫描未引用的内存并收集它——这是昂贵的,并且可能导致在较慢的系统上“卡顿”——但他们只需要偶尔这样做,理论上甚至可以微调他们的收集周期以匹配程序实际使用其内存的方式。一般来说,GC 程序会比非 GC 程序使用更多的内存,并且当 GC 决定收集时会显着变慢。另一方面,ARC 将“扫描”转移到编译时并在内存可用时立即释放内存,但它必须不断更新对象引用计数,而不是像收集器那样等待垃圾堆积。

关于iphone - iOS 5 有垃圾收集功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com