2013-11-14 32 views
-2

我有几个类方法的类。该项目已启用ARC。内存管理在这种情况下如何工作?何时在类方法内创建的对象被释放?应该手动完成吗?我有点困惑。iOS中的内存管理类方法中的ARC

+1

请注意,使用ARC时,您不得手动释放任何对象。编译器会将其标记为错误并停止构建。 – dan

回答

1

ARC会自动将该对象中的变量标记为autorelease,因此当您的对象被释放时,它内部的对象也会被释放。

如果您正在使用ARC,您不应该过多担心它,尽管知道内存是如何工作的很好。

+1

谢谢。后续问题是:我正在做一些核心数据导入和同步类方法。在操作过程中,内存上升,操作之后永远不会消耗。我目前正在用仪器进行研究。 –

+0

只是为了解这个问题(http://stackoverflow.com/questions/19983014/core-data-memory-usage-wont-get-drained)。你可以请看看。谢谢 –

0

你不需要担心这一点。 ARC还会处理你的类方法中的内存管理。对象是当前执行完成时的版本。您不需要手动释放该对象。

0

ARC通过在编译时添加代码来确保对象的存活时间尽可能长,但不再存在。从概念上讲,它遵循与手动引用计数相同的内存管理约定(如高级内存管理编程指南中所述),方法是为您添加适当的内存管理调用。

为了让编译器生成正确的代码,ARC限制了您可以使用的方法以及如何使用免费桥接(请参阅“免费桥接类型”)。 ARC还为对象引用和声明的属性引入了新的生命周期限定符。

对于OS X v10.6和v10.7(64位应用程序)以及iOS 4和iOS 5,Xcode 4.2支持ARC。OS X v10.6和iOS 4不支持弱引用。

Xcode提供了一个工具,可以自动执行ARC转换的机械部分(如删除保留和释放调用),并帮助您解决迁移器无法自动处理的问题(选择Edit> Refactor> Convert to Objective-C ARC )。迁移工具将项目中的所有文件转换为使用ARC。如果您对某些文件使用手动引用计数更方便,也可以选择在每个文件基础上使用ARC。