2013-12-11 44 views
0

在我的iOS应用程序中ARC被禁用。当我使用仪器工具检查我的代码时,我在代码中发现了一些内存泄漏问题,如下所述。目标c中的内存泄漏问题应用程序

Obj1是一个在.h文件中声明的对象(其类型为classA)。

self.Obj1 = [[classA alloc]init]; 

我释放dealloc方法Obj1

我使用的代码集在.m文件的Obj1值。

此代码正常工作。但显示内存泄漏问题。

如何避免此内存泄漏问题。

回答

-1

如果你犯了一个属性保留OBJ1由1意味着增量您的Alloc通过增量1这个对象在此之后,所以它的价值保持2

使用下面的代码:

ClassA *objC = [[classA alloc]init]; 
self.Obj1 = objC; 
[objC release]; 
0

使用下面的代码:

self.Obj1 = [[[classA alloc]init]autorelease]; 

当视图在不使用或卸载的dealloc才会被调用。

-1

有许多方法来处理这个问题:

首先,

self.Obj1 = [[[classA alloc]init]autorelease]; 

其次,

Obj1 = [[classA alloc]init]; 
... 
// use self.Obj1 in the code 
... 
[Obj1 release]; 

三,

self.Obj1 = [[classA alloc]init]; 
... 
[self.Obj1 release]; 

使用任何一个出这些。

-1

您可以删除self. ,只需Obj1 = [[classA alloc]init];。 因为当你调用self.,您保留对象again.So self.Obj1 = [[classA alloc]init];后,对象保留计数为2