내 프로젝트에서 메모리 누수를 없애려고하고 있지만 지금은 며칠 동안 2 가지 상황에 빠져 있습니다.xcode 프로젝트 - 메모리 누수
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if (currentElement) {
[currentElement release];
currentElement = nil;
}
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init]; //leak #1
// DOING OTHER STUFF....
//......................
}
}
/*****************************************************************************/
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]){
[item setObject:currentTitle forKey:@"title"]; // leak #2
[item setObject:currentLink forKey:@"link"]; //leak #3
[bucket addObject:[item copy]]; // NSMutableArray *bucket
}
}
누수 1에 대해서는 메모리 할당 직전에 항목을 릴리스하려고 시도했지만 앱을 중단하면 시도가 중단되었습니다. (내 말은, 단지 이전 item = [[NSMutableDictionary alloc] init];
내가() 메소드가, 나 또한 내가 무슨 일이 일어나고 있는지 아무 생각이 누출 # 2, # 3의 [item release];
이 내의 dealloc에서
if (item){
[item release];
item=nil;
}
을 사용 참고 :. 2 개의 XML 파일을 구문 분석하는 동안 방법은 XML 파서에 의해 호출되어, 요소가 read.That이며, NSMutableDictionary *이 항목이 모든 요소에 대해 다시 사용 할 때마다. 어떤 제안
은? 사전 :
먼저 답장 해 주셔서 감사합니다. 나는 이미 아이템을 자동으로 꺼내려고했으나 여전히 누수가 발생했다. 빌드 및 분석을 사용하면 모든 것이 정상임을 나타냅니다. – CrisDeBlonde
수표가 손상된 것 같습니다. if (item) 대신'item! = nil'을 검사 해보십시오. – Moshe
당신은 나에게 직접 해결책을주지 못했지만 당신은 NSZombie를 사용해야 만했다. 그것은 나에게 길을 보여 줬다! 감사합니다 :) – CrisDeBlonde