다음 코드에서는 재귀를 사용하여 트리에서 xml 태그의 내용을 얻으려고합니다. 문제는 태그가 발견되었지만 self에 대한 모든 호출이 새 스레드를 시작하므로 결국 반환 값은 NOT_FOUND이지만 이전에 발견 된 경우 중지되어야합니다. 도전 .. 어떤 도움 포인터가 이해할 수있을 것이다 종료 조건을 설정하기 위해 while 루프재귀 및 목표 C
retValue = [self valueOf:anElement :tag];
if(![retValue isEqualToString:@"NOT_FOUND"]){
break;
}
당신은 내부 메서드 호출의 반환 값을 사용하지 않는에서
// Recursive method to find a XmlElement value
- (NSString*) valueOf : (XMLElement*) elementIn :(NSString*) tag
{
NSString *retValue = @"NOT_FOUND";
if ([self tagMatch:elementIn :tag]){
retValue = elementIn.text;
found = 1;
} else {
for (XMLElement *anElement in elementIn.subElements)
{
[self valueOf:anElement :tag];
}
}
return retValue;
}
- (int) tagMatch : (XMLElement*) elementIn :(NSString*) tag
{
int found = 0;
if([elementIn.name isEqualToString:tag]) {
NSLog (@"Found tag %@, value = %@", tag, elementIn.text);
found = 1;
}
return found;
}
나는 새 스레드를 시작하는 코드를 볼 수 없습니다를? – trojanfoe
Xcode를 사용하여 디버깅 할 때 디버그 창에 새 스레드가 생성 된 것을 볼 수 있습니다. Xcode 및 objc을 처음 사용하여 미안합니다. – rajeevs
게시 한 코드에 새 스레드가 생성되지 않으므로 해당 스레드를 다른 곳에 만들어야합니다. 그렇다면이 코드의 문제점은 무엇입니까? – trojanfoe