2011-05-07 73 views
3

我發現了一個類似的問題: NSMutableArray addObject in for loop - memory leakObjective-C的ADDOBJECT導致內存泄漏

但是所有這些建議似乎解決我的問題。

我有一個簡單的循環,我創建一個對象並將其添加到數組。當我嘗試在每個循環結束時釋放對象時,應用程序將以「EXC_BAD_ACCESS」的形式崩潰。如果我不釋放對象,我得到泄漏的內存:

在.H

NSMutableArray *mainlist; 
... 
@property (nonatomic, retain) NSMutableArray *mainList; 

在.M

@synthesize mainlist; 
... 

for (int i = 0; i < [self.objects count]; i++) { 

    MyObj *myObj = [[MyObj alloc] init]; 

    myObj.title = [[self.objects objectAtIndex: i] valueForKey: @"title"]; 

    [self.mainlist addObject:myObj]; 

    [myObj release]; // crashes with release 
} 

MyObj中只是有一些屬性:

@property (nonatomic, retain) NSString *title; 
@property (nonatomic, retain) NSString *date_text; 
... 
@synthesize title; 
@synthesize date_text; 

- (void)dealloc 
{ 
    [super dealloc]; 

    [title release]; 
    [date_text release]; 
} 

@end 

任何幫助將非常感激。

謝謝。

+0

你可以發佈'MyObj'的'init'消息嗎? – 2011-05-07 13:04:22

+0

你在* MyObj *類中重寫了* init *方法嗎? – EmptyStack 2011-05-07 13:05:35

+0

我已經更新了上面的代碼。沒有init方法。只是getters/setters。它需要它嗎? – GivP 2011-05-07 13:10:43

回答

3

崩潰導致您首先調用超類的dealloc,然後嘗試釋放屬性。更改爲:

- (void)dealloc 
{ 
    [title release]; 
    [date_text release]; 

    [super dealloc]; 
} 

而且:我幾乎可以肯定,你的self.mainlist是零,當你在那裏添加對象時。創建屬性並不意味着該屬性會自動初始化。