回答

0

ARC是不是免费的 - 它会增加或减少引用计数,和dealloc的对象时,引用计数为0

与手动保留/释放相比,ARC将是正确的,它可能更少地调用保留/释放,因为它经常知道保留/释放对何时取消彼此,保留/释放更快,因为它没有呼叫Objective-C方法调用(在Objective-C中,你可以覆盖保留/释放;用ARC你不能)。

+0

为什么它会在运行时而不是在编译时增加和减少引用计数。 – oneofone

0

ARC遵循与C++的std :: shared_ptr类似的机制(如果不是相同的话),std :: shared_ptr使用引用计数来查看对象是否超出范围时应该调用exit time函数;在Obj-C的情况下,该调用将会释放。

编译器添加的版本调用,用于管理引用计数如何递减;叮当声机制的作用非常明确,并且可以节省检查是否有平衡呼叫的问题,以便永远呼叫每个增加引用计数的方法。

因此,关于您的原始问题,ARC不应在运行时应用程序中产生额外的性能成本。

如果您怀疑您的应用程序存在内存问题,那么您应该在乐器中对您的应用程序进行配置并查看所用时间。

内存优化是一个完全不同的蜡球,幸好有解决方案。因此,如果您的高度线程化应用程序在并发内存分配方面存在问题,您可以查看像英特尔的线程构建模块这样的开源库,它具有出色的内存管理器,但需要注意的是,它专为C/C++ 。

顺便说一句,对于ARC的详细说明,请阅读此页:http://clang.llvm.org/docs/AutomaticReferenceCounting.html

相关问题