最新のアプリでメモリ リークのクリーンアップ モードを使用していますが、解決できない問題に遭遇しました。
次のメソッドは、1 つの厄介な問題を除いてクリーンアップされました。Instruments は、オブジェクトを作成している時点で、itemsToKeep と呼ばれる NSMutableArray がメモリをリークしていることを教えてくれます。私がメモリをリークしている理由についてのアイデアをいただければ幸いです。
以下に、retainCounts に関するいくつかの注意事項を示します。メソッドに入る: self.myList は、retainCount = 1 であり、メソッドを終了する: self.myList は、retainCount = 2 で、itemsToKeep は、retainCount= 2 です。どちらも 1 までカウントダウンしますが、しばらくするとアプリがクラッシュします (その理由はわかっていると思います)。
itemsToKeepのメモリリークを取り除く方法を知っている人はいますか?
ありがとう。
-(void)parsedScores:(BOOL)shouldAdd {
//trim space, tab, newline from both ends
NSString *tmp = self.lblCurrentName.text;
NSString *list = [self trimString:tmp];
NSString *separators = @",";
[self.myList removeAllObjects]; // doesn't impact retain counts
self.myList = (NSMutableArray *)[list componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:separators]]; //this bumps up the self.myList retain count to 2
NSMutableArray *itemsToKeep = [NSMutableArray arrayWithCapacity:30];
for (NSString *item in self.myList) {
NSString *tmpItem = [self trimString:item];
if (! [self shouldRemoveItem:tmpItem]) {
[itemsToKeep addObject:tmpItem];
}
}
self.myList = itemsToKeep; //makes both variables' retain counts = 2
}