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을 반환합니다.
libxml2를 사용하는 것을 선호합니다. – Akusete
"그다지 붙지 않는다"는 것은 무엇을 의미합니까? 당신은 디버그 출력을 얻고 있거나 작동해야합니다. – jtbandes
파서 코드 – slf