2010-10-08 67 views
1

我有自动释放的对象,我将其分配给对象上的合成(保留)属性,但它将它们标记为泄漏。泄漏只是有时会产生误报或者我错过了什么?仪器中的泄漏工具是否会产生误报?

+1

仪器已经知道产生假阳性,但你描述的是一个合法的泄漏。见下文。 – 2010-10-08 16:55:31

回答

6

保留属性将否决autorelease。

编辑为了清楚起见,我并不是说要推翻。我的意思是...它会阻止autorelease强制执行dealloc。查看所有肮脏细节的评论。

你应该手动释放该财产在你的dealloc,让自动释放自生自灭

+0

或者只是将属性设置为这样:'self.MyProperty = nil'将始终释放项目 – 2010-10-08 16:57:36

+1

Nitpicking,但不存在“overrule”。保留属性的合成访问器为该对象提供*额外*所有权声明,然后需要通过相应版本进行平衡。 (这可能来自对访问者的另一个调用,正如@Richard所建议的那样)。与此同时,autorelease正常地自动释放。 – walkytalky 2010-10-08 17:18:28

+0

我试图用外行的话来说明。鉴于问题的性质,我不确定整个技术概览会有多大帮助。 – 2010-10-08 17:21:38