2013-12-11 45 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