-5

When one uses ARC, this means we can forget about memory management related tasks right? e.g., like deletion/release of the memory we allocated etc.

Two places I know we may need to interfere is retain cycles, and one should use __weak before Outlet ivars in class definitions (if these outlets are not top objects in object hierarchy of the XIB).

Is there something else I have to consider?

4

2 回答 2

2

事情变了。您仍然应该坚持一些与内存管理/ARC 相关的模式。您将不再保留、释放、自动释放和释放。

新:你仍然会覆盖一个 dealloc 方法并且 nil 所有的强引用。这并不是真正需要的,但可以做到。但是你不会再调用 [super dealloc] 了。

您将根据您是否拥有所有权将属性声明为强或弱。

如果你想以释放内存的方式摆脱一个对象,那么你必须 nil 对该对象的所有强引用。每个强引用对应一个保留。但是您不能对这些对象调用保留。

您不能再调用未声明的方法(没有 ARC,这将生成编译器警告,使用 ARC,这是一个错误。)使用变量选择器(即使用 SEL 类型的变量并在对象上执行这些变量)时会收到警告,您永远不应该使用可能对保留计数有影响的方法(例如 alloc)来执行此操作。

当您与框架中不属于 ARC 的区域(例如核心功能)交互时,您仍然有很多出错的机会。

因此,它与“忘记”相去甚远,但与以前的 MRC 模式相比,应用 ARC 模式的工作量更少且更不容易出错。

于 2013-08-08T07:48:29.087 回答
-1

使用 ARC 时,您不必使用 dealloc/autorelease。所以,是的,你可以忘记删除释放等。唯一要考虑的是强引用周期,就像你在这里提到的那样。另一个例子是当您使用委托对象时。

你也可以参考苹果的文档

于 2013-08-08T07:38:06.733 回答