我们应该在dealloc方法中释放委托吗?
问题描述:
你好我在Objective-C内存管理方面有一个小问题。我们应该在dealloc方法中释放委托吗?
我知道如果一个属性被保留,我们应该在dealloc方法中释放它。例如:
@property (nonatomic, retain) NSString *title;
在dealloc方法
:
-(void) dealloc
{
[title release];
[super dealloc];
}
但是,如果我们声明一个代理(使用分配)
@property (nonatomic, assign) id titleDelegate
我们应该释放它的dealloc方法?
[titleDelegate release]
在此先感谢您的任何提示。
答
不可以。你没有分配内存或保留,所以不要释放它。使它成为零。只有当你是它的所有者时,你才会释放内存。
答
您只需要发布您保留的内容。分配不会增加retainCount。所以,答案是否定的。
答
不需要,您不必释放它。你不拥有该对象
答
从未发布委托只要把它为零
这里的解决方案是使用ARC和弱引用。 – 2012-03-23 12:50:32
+1用于指向ARC。我总是使用它。但在我的情况下,我有一个项目已经写好,我正在解决一些内存问题。谢谢 – Youssef 2012-03-23 12:56:53