사이트에서 일부 RSS 피드를 구문 분석하고 있는데 내 코드가 파서 foundCharacters의 메서드에 도달하면 응용 프로그램이 exc_bad_access 오류로 종료됩니다. 이상한 것은 내가 시뮬레이터에서 내 애플 리케이션을 실행할 때 아무 문제없이 애플 리케이션이 실행된다는 것입니다. 이것은 내 구문 분석 코드 :xml 파서 : 파서 foundCharacters 오류
#pragma mark NSXMLParser delegate
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"item"]) {
[item setObject:title forKey:@"title"];
[item setObject:link forKey:@"link"];
[feeds addObject:[item copy]];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
element = elementName;
if ([element isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
title = [[NSMutableString alloc] init];
link = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)strings {
if ([element isEqualToString:@"title"]) {
[title appendString:strings];
} else if ([element isEqualToString:@"link"]) {
[link appendString:strings];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
}
그것의 첫 번째 줄에 도달 할 때 내 오류가 나타나고있다 : 내가 가진 그 라인을 변경하려고
if ([element isEqualToString:@"title"]) {
[title appendString:strings];
} else if ([element isEqualToString:@"link"]) {
[link appendString:strings];
}
예 :
[title appendString:strings];
그것은 rss 피드를 입력 할 링크가 없다는 주요 차이점과 완벽하게 실행됩니다. 즉, 요소가 문자열 "@ title"과 같은지 검사 할 때 문제가있는 것 같습니다. 감사합니다.
여기에 문제가 있지만 왜 ARC를 사용하지 않는 한 나쁜 액세스를 얻게 될지 잘 모르겠습니다. BTW,'didEndElement'가'element' 변수를'nil'으로 설정했는지 확인하십시오. 메소드 끝에서 (그렇지 않으면 제목과 링크 값에 의도하지 않은 여분의 문자가 생길 수 있습니다). – Rob
YES SIR !!! 그게 내 생각 이었어. 그리고 나는 왜 이것이 정확히 일어 났는지 이해할 수 없다. didendelement에서 요소 변수를 nil로 설정했는데 작동합니다. 오류 없음. 영감에 감사드립니다. – user3882720