키의 첫 번째 문자가 객체 이름의 NSMutableDictionary입니다. 보기는 아이폰에 '연락처'탭과 같은 것입니다. 또한 사용자는 목록에서 개별 개체를 선택할 수 있습니다.[NSMutableDictionary ValueForKey :]에서 반환 된 배열을 해제해야합니까?
코드에서 나는 각 선택된 객체가 그들을 더 처리하도록 찾습니다.
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를 릴리스하는 곳에서 응용 프로그램이 충돌합니다.
위의 코드에서 [배열 릴리스]를 제거하면 앱이 정상적으로 작동합니다.
내 질문에 '배열'이 실제로 searchedNameDictionary의 객체를 릴리스하고 있습니다. 이것이 일어나고있는 것 같습니다.
배열을 해제하지 않으면 메모리 누수가 발생합니까?
감사합니다. 메모리 관리의 기본 원칙을 적용해야합니다. 이제 코드에 대해 더 자신감을 가지십시오. 내 질문에 답해 주셔서 다시 한번 감사드립니다. – prd