Iphone 报告错误内存泄漏的仪器?

Iphone 报告错误内存泄漏的仪器?,iphone,cocoa-touch,memory-management,ipad,instruments,Iphone,Cocoa Touch,Memory Management,Ipad,Instruments,我在我的iPad应用程序上运行仪器来检查是否有泄漏。它在一个方法中保留一个对象的地方发现了几个“漏洞”: 但这些对象稍后将在dealloc中发布: 这些是否被归类为误报?self.detailpop是否在使用retain声明的属性上?如果是这样,那么assignment self.detailpover将导致生成的set方法对您已经拥有的alloc返回的对象调用retain 如果它是保留属性,则从分配中删除self,这样就不会调用set方法,并且您的保留计数将是正确的 Property* p

我在我的iPad应用程序上运行仪器来检查是否有泄漏。它在一个方法中保留一个对象的地方发现了几个“漏洞”:

但这些对象稍后将在dealloc中发布:


这些是否被归类为误报?

self.detailpop是否在使用retain声明的属性上?如果是这样,那么assignment self.detailpover将导致生成的set方法对您已经拥有的alloc返回的对象调用retain

如果它是保留属性,则从分配中删除self,这样就不会调用set方法,并且您的保留计数将是正确的

Property* prop = [[Property alloc] init]; // retain count == 1 
self.property = prop; // retain count == 2 
[prop release]; // retain count == 1 
或者避免使用生成的set方法,并保留它

property = [[Property alloc] init]; // retain count == 1 

我有点困惑。我的印象是,无论何时向属性分配对象,都应该使用self,以确保它通过适当的setter。一般来说,是的,但是在类实现中需要小心。从alloc返回的任何对象都已归您所有,因此您可以在分配对象后调用release,也可以直接分配给成员变量。谢谢,现在这很有意义。