2011-09-01 76 views
0

根據XCode中的泄漏儀器,它說這條線給內存泄漏(100%)?使用儀器的NSMutableArray的內存泄漏

self.unsentPatients = [[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]]; 

我正確地釋放等dealloc(這肯定是在跑),所以我不明白我要去哪裏錯了?

這只是一個小泄漏,分析並沒有提出任何事情,但仍然是一個泄漏。

親切的問候,

多米尼克

回答

2

有很多事情擰與此代碼。

我假設的屬性被保留的價值,那麼你不應該賦值你現在正在做的方式,但更喜歡:

NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]]; 
self.unsentPatients = temp; 
[temp release], temp = nil; 

self.unsentPatients = [[[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]] autorelease]; 

你還應避免在dealloc或init中使用self.語法,這將調用mutator。 在多線程環境中,這可能會產生問題。

因此正確的dealloc是:

- (void) dealloc { 
    [unsentPatients release], unsentPatients = nil; 
    [super dealloc][; 
}