【发布时间】:2013-06-15 01:58:18
【问题描述】:
我有一个关于如何最好地管理数组指针以确保不会发生内存泄漏的问题。我有一个容器类 A 和一个复合类 B。两者都有一个数组属性,并且都对数组做自己的事情。但是容器是唯一暴露给公共 API 的类。所以我设置了 classA.someProperty,它在内部设置了 classB.someProperty,如下所示。我需要做什么样的清理工作? ARC 会自动为我解决这个问题吗?
class A
@property(nonatomic,strong) NSMutableArray* someProperty;
@property(nonatomic,strong) ClassB* classB;
Class B
@property(nonatomic,strong) NSMutableArray someProperty;
在A类的实现中;
classB.someProperty = [self.someProperty mutableCopy]
//do some other work with self.someProperty
and in the implementation in Class B;
//do some work with self.someProperty [Includes modifications to the array]
【问题讨论】:
-
如果将
- dealloc中的所有strong属性设置为nil,应该没问题。这就是计数的参考点。 -
您确定要在 dealloc 中将属性设置为 nil - stackoverflow.com/questions/7906804/…
-
无意冒犯你,但是你有没有推荐在使用 ARC 时在 dealloc 中将所有强属性设置为 nil 的参考资料?
-
@H2CO3 您绝对没有有来实现 dealloc,据我所知,您也不必在 ARC 下设置 nil 属性。你从哪里得到的?
-
不需要实现dealloc。来自 Apple 的文档:“如果您需要管理资源而不是释放实例变量,则可以实现一个 dealloc 方法。” (developer.apple.com/library/ios/ipad/#releasenotes/ObjectiveC/…) - 他们也没有说必须 nil 属性(非 ARC 代表除外)
标签: ios objective-c