自动参考计数(ARC)对内存泄漏的影响

mee*_*tpd 5 iphone objective-c ios ios5 automatic-ref-counting

我是iOS 5和ARC的新手,所以原谅我的愚蠢问题.

如果我们在项目中使用ARC,是否意味着根本不存在任何内存泄漏.

如果我们使用ARC,是否需要使用仪器来检测内存泄漏和NSZombies?

rob*_*off 5

ARC将帮助您消除某些类型的泄漏,因为您不会忘记releaseautorelease单个对象.例如,这种类型的错误变得不可能:

myLabel.text = [[NSString alloc] initWithFormat:@"%d", 17];
// oops, just leaked that NSString!
Run Code Online (Sandbox Code Playgroud)

但是,ARC不会消除由保留周期引起的泄漏.您仍然可以通过使用弱引用或在泄漏之前手动中断循环来消除保留周期.例如,当我们开始更多地使用块时,块/自保持周期变得更加常见.在过渡到ARC发行说明讨论了如何使用弱引用,以避免这些周期.