NSE*_*rer 21 iphone objective-c ios ios5
我不再需要担心iOS 5以后的内存管理吗?是否所有为iOS 4及更早版本编写的程序都必须重写以允许iOS为您管理内存?
Chu*_*uck 39
您似乎在谈论自动引用计数,在其他答案中提到.ARC是一种GC,它可以自动释放内存,但与良好的垃圾收集器有许多不同之处.
首先,它主要是编译器技术.编译器知道Cocoa的引用计数指南,因此它根据规则插入保留和释放的位置.它的工作方式就像你自己编写保留和释放一样 - 它只是为你插入它们.普通垃圾收集器在运行时跟踪程序的内存.
其次,因为它就像保留和释放一样,它不能捕获保留周期(如果对象A保留对象B并且对象B保留对象A,并且没有其他任何引用它们,它们都变成不朽的).您需要采取相同的预防措施来防止它们.
它还使用与自动垃圾收集器不同的资源.与Objective-C一起使用的垃圾收集器必须扫描未引用的内存并收集它 - 这是昂贵的,并且可能导致在较慢的系统上"口吃" - 但它们只需偶尔这样做,理论上甚至可以微调它们的收集周期与程序实际使用其内存的方式相匹配.通常,GC程序将使用比非GC程序更多的内存,并且当GC决定收集时将显着减慢.另一方面,ARC将"扫描"移动到编译时并在内存可用时立即释放内存,但它必须不断更新对象引用计数,而不是等待垃圾像收集器一样构建.
Sop*_*ert 23
在Apple的公共iOS 5页面上,他们声明:
自动参考计数
Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作.通过使用新的Apple LLVM编译器启用ARC,您将永远不需要再次键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏.编译器完全了解您的对象,并在不再使用它的瞬间释放每个对象,因此应用程序运行速度与以往一样快,具有可预测的平滑性能.
这是一个编译器功能; 不是操作系统功能,所以我不明白为什么它不适用于旧版本.
| 归档时间: |
|
| 查看次数: |
19301 次 |
| 最近记录: |