0

NSXMLParser를 구현하려고 시도했지만 지금까지 메모리 문제가 있거나 성능 문제가 있거나 작동하지 않습니다.NSXMLParser 및 메모리 관리 문제

원래 인터넷에서 예제로 작업했으며 메모리가 누수되었습니다. 내가 제대로 개체를 릴리스했지만 각 요소에 대한 각 개체를 할당하고 나서 해제하기 때문에 성능에 문제가 있음을 발견했습니다. 그래서 나는 더 일한 속성을 사용하기로 결정했습니다,하지만 난 시도하고 배열에 사전을 추가 할 때이 충실하지 않습니다

[overlay insertObject:entry atIndex:[overlay count]]; 

그래서 나는 3 가지 질문이 있습니다. 메모리 관리 문제를 처리하는 가장 좋은 방법은 속성입니까? 그렇다면 NSDictionary * 항목을 오버레이에 저장할 수없는 이유는 무엇입니까? 속성이 가장 좋은 방법이 아닌 경우 무엇입니까?

건배

편집 : 나는 상대적으로 작은 XML 파일을 처리하고있어하지만이 요소를 많이 가지고있다. URL에서 다운로드하고 SQLite 데이터베이스에 데이터를 저장했습니다.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
if ([attributeDict objectForKey:@"title"]) { 
    self.title = [attributeDict objectForKey:@"title"]; 
} else if ([attributeDict objectForKey:@"lng"]) { 
    self.latitude = [attributeDict objectForKey:@"lng"]; 
    self.longitude = [attributeDict objectForKey:@"lat"]; 
} 
if (title && latitude) { 
    NSMutableDictionary *entry = [[NSMutableDictionary alloc] init]; 
    [entry setObject:title forKey:@"title"]; 
    [entry setObject:latitude forKey:@"latitude"]; 
    [entry setObject:longitude forKey:@"longitude"]; 
    [overlay insertObject:entry atIndex:[overlay count]]; 
    [entry release]; 
    NSLog(@"%@", overlay); 
} 
} 

유일한 데이터가 특성에 있기 때문에 다른 대리자 호출이 사용되지 않습니다. 끝에 NSLog 그냥 null을 반환합니다.

+0

libxml2를 사용하는 것을 선호합니다. – Akusete

+0

"그다지 붙지 않는다"는 것은 무엇을 의미합니까? 당신은 디버그 출력을 얻고 있거나 작동해야합니다. – jtbandes

+0

파서 코드 – slf

답변

0

willcodejavaforfood가 지적한 것처럼 간단한 문제였습니다. 그 대답이 아니기 때문에 제가 할 수있는 것은 투표를하는 것뿐입니다.