オブジェクトの名前の最初のアルファベットをキーとする NSMutableDictionary があります。ビューは、iPhone の「連絡先」タブのようなものです。さらに、ユーザーはリスト内の個々のオブジェクトを選択できます。
コードでは、選択した各オブジェクトを見つけてさらに処理します。
NSMutableArray *objectsToAdd = [[NSMutableArray alloc] init];
NSMutableArray *array = nil;
for (NSString *key in self.nameIndex) {
array = (NSMutableArray *)[searchedNameDictionary valueForKey:key];
for (Objects *eachObject in array) {
if (eachObject.objectIsSelected){
[objectsToAdd addObject:eachObject];
}
}
}
[array release];
-(void)dealloc()
{
[searchedNameDictionary release];
}
割り当て解除されたオブジェクトが参照されているというメッセージとともに、searchedNameDictionary を解放した場所でアプリがクラッシュします。
上記のコードで [array release] を削除すると、アプリは正常に動作します。
私の質問は、「配列」を解放すると、実際にsearchedNameDictionary内のオブジェクトが解放されるということです。これが起こっているようです。
配列を解放しないとメモリリークが発生しますか?