我不断收到以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setLinkID:]: unrecognized selector sent to instance 0x6bf37e0'
我正在使用 NSXMLParser 解析 XML 文档,当我遇到标签“链接”时,我正在创建一个自定义 JLink 对象并将解析器委托传递给该对象。这种方法工作正常,然后我一定做了一些事情,因为现在每次运行项目时它都会突然产生上述错误。
我一直在努力解决问题,但我认为 JLink 对象正在被释放,因此当调用 setLinkID: 方法时,程序会崩溃。有没有其他人遇到过这个问题或知道可能是什么问题?我的代码如下:
导致错误(大部分时间)但有时会发生变化的方法:
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqual:@"linkID"]) {
currentString = [[NSMutableString alloc] init];
[self setLinkID:currentString];
} else if ([elementName isEqual:@"userID"]) {
currentString = [[NSMutableString alloc] init];
[self setUserID:currentString];
} else if ([elementName isEqual:@"url"]) {
currentString = [[NSMutableString alloc] init];
[self setLink:currentString];
} else if ([elementName isEqual:@"displayText"]) {
currentString = [[NSMutableString alloc] init];
[self setText:currentString];
}
}
以及创建 JLink 并使其成为解析器委托的方法:
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqual:@"userID"]) {
currentString = [[NSMutableString alloc] init];
[self setUserID:currentString];
[links removeAllObjects];
} //A bunch of other checks
else if ([elementName isEqual:@"link"]) {
JLinks* newLink = [[JLinks alloc] init];
//Setup the parent so that we can regain control of the element
[newLink setParentParserDelegate:self];
[parser setDelegate:newLink];
[[self links] addObject:newLink];
}
}
我正在使用ARC。谢谢