분명히 이걸 가지고 뭔가를 얻지 못했습니다.IOS - NSMutableString : 속성을 추가하고 초기화하는 중
XML 문서를 구문 분석하므로 foundCharacters가 잘리고 조각으로 처리되기 때문에 하나의 요소에 추가 할 NSMutableString이 있습니다. 이 모든 것을 작동시킬 수는 있지만 작동하지 않는 이유가 무엇인지 이해하지 못합니다.
@property (copy, nonatomic) NSMutableString *currentFoundCharacter;
이렇게하면 ViewController의 속성을 선언합니다.
그럼 내가 가진 :- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (!currentFoundCharacter) {
currentFoundCharacter = [[NSMutableString alloc] init]; // Have to do this or new strings never append to it.
}
if ([currentAttribute compare:@"description"] == NSOrderedSame && currentAttribute.length > 1) {
[currentFoundCharacter appendString:[string copy]];
}
지금 여기이 잘 작동합니다. 그것은 내가 원하는 모든 요소 내에서 결합 할 것입니다. 하지만 합성 메서드를 사용하려고하면 기본적으로 모든 currentFoundCharacters를 self.currentFoundCharacters로 바꾸기 때문에 불변의 개체를 변경하려고하면 오류가 발생합니다.
어쩌면 내가 왜, 그리고 왜 인스턴스 변수를 사용하지만, init 메소드 밖에서 그런 식으로 오해했는지 모르겠다. 나는 인상을 받고 있었지만 setter/getters를 사용하는 것이 더 좋았다. 결국 나는 유지 보수 가능한 코드를 만들고 싶습니다.
변경할 수있는 클래스를 copy로 선언하지 않겠습니다. – CodaFi
나는 며칠 전 xml을 파싱하는 법을 배웠다. 내가 볼 수있는 두 가지 차이점 만 있습니다. 1. 'currentFoundCharacter'를 내 클래스의 속성으로 만들지 않았습니다. 인터페이스에서 선언 한 것뿐입니다. 2. NSMutableString을 한 번만 할당하고'[NSMutableString string]'을 사용하여 비 웁니다. –