次のエラーが発生し続けます。
*** 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を使用しています。ありがとう