나는 xmlParser
NSXMLParser가 실행되는 동안 어떻게 단추를 비활성화 한 다음 완료되면 활성화 할 수 있습니까?
내가
goButton
아래 getXML
방법으로 xmlParser
클래스에 내 viewController
에 NSURL
객체를 전달하고있어 버튼 내가 getXML
를 호출하는 탭 클래스로 XMLParser.h
을 가져 오는 viewController
입니다했다 방법을 아래에. 나는 getXML
메서드를 트리거하기 위해 두드린 버튼을 비활성화했다. 그러나 xmlParser가 반환 된 XML을 구문 분석하고 나면 다시 사용할 수 있도록 코드를 어디에 넣어야할지 모르겠습니다.
- (IBAction) getXML {
goButton.enabled = NO;
// allocate and initialize the xmlParser
xmlParser = [[XMLParser alloc] init];
// then generate the URL we are going to pass to it and call the fetchXML method passing the URL.
NSURL *xmlurl = [[NSURL alloc] initWithString:@"http://www.mysite.com/myfile.xml"];
[xmlParser fetchXMLFromURL:xmlurl];
// release objects
[xmlurl release];
[xmlParser release];
}
는 @Squeegy 권고에 따라, 나는 내 코드를 수정했습니다. 파서가 구문 분석이 완료되면
이
2010-02-17 00:22:20.574 XMLApp[2443:521b] *** -[viewController performSelectorOnMainThread:withObject:]: unrecognized selector sent to instance 0x1285a0
2010-02-17 00:22:20.578 XMLApp[2443:521b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[viewController performSelectorOnMainThread:withObject:]: unrecognized selector sent to instance 0x1285a0'
2010-02-17 00:22:20.583 XMLApp[2443:521b] Stack: (
861696817,
860329709,
861700631,
861203093,
861166272,
18715,
846004025,
845672609,
848189713
)
나쁜, 그 방법은'- (void) performSelectorOnMainThread : (SEL) aSelector withObject : (id) arg waitUntilDone : (BOOL) wait'. 나는 대답에서 잘못된 방법 이름을 주었다. –
@ 스큐 기 OK, 다소 도움이되었습니다. 지금 오류는 없지만 fetchXMLFromURL 함수는 실제로 수행 한 작업을 수행하지 않습니다. 마치 파서가 xml 파일에 대한 서버에 실제로 연결을 시작하기 전에 컨트롤이 주 스레드로 돌아가는 것과 같습니다. 스레딩이 도입되기 전에 완벽하게 작동했습니다 – conorgriffin
아마 스레딩이있는 샌드 박스에서 간단한 예제를 시도해야합니다. 주위를 둘러 보는 것은 힘들 수 있습니다. 이 질문은 별도의 질문에 대한 별도의 문제 일 수 있습니다. 이 하나는 붐비는군요. –