首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动引用计数(ARC)对内存泄漏的影响

自动引用计数(ARC)对内存泄漏的影响
EN

Stack Overflow用户
提问于 2012-01-21 13:45:51
回答 3查看 2K关注 0票数 5

我是iOS 5和ARC的新手,所以请原谅我这个愚蠢的问题。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-21 14:04:25

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

代码语言:javascript
复制
myLabel.text = [[NSString alloc] initWithFormat:@"%d", 17];
// oops, just leaked that NSString!

然而,ARC不会消除由保留周期引起的泄漏。消除保留循环仍然取决于您,要么使用弱引用,要么在循环泄漏之前手动中断它们。例如,随着我们开始更多地使用块,块/自保留周期变得更加常见。讨论了如何使用弱引用来避免这些循环。

票数 5
EN

Stack Overflow用户

发布于 2012-01-21 13:49:08

不,这并不能阻止内存泄漏的发生。引用计数在运行时发生的情况是,有时代码会留下悬空的引用,然后对象就不会被释放。写出好的代码仍然取决于你。

票数 0
EN

Stack Overflow用户

发布于 2012-01-21 14:53:46

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

在您的程序和您使用的库中,仍然可能存在泄漏。同样,ARC只适用于ObjC对象--你很容易泄漏任何不是objc对象的堆分配(例如malloc/new)。

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

是。前面的回复应该详细说明为什么你的程序不能保证没有这些问题。此外,如果你做了一些愚蠢的事情,编译器可能会出错,如果你没有适当地保护你的数据(例如,并发执行),你肯定会导致问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8950989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档