2009-09-05 5 views
0

현재 viewcontroller에서 NSXMLParser가 작동합니다. 나는 2 개의 데이터 요소를 속성으로 가지며 모든 xmlparsing을 할 새로운 클래스를 만들고 싶다. 내가 가진 문제는 parsing이 끝나면 부모에게 "경고"하도록 새 클래스를 가져 오는 것입니다. 따라서 viewcontroller (부모)는 활동 표시기를 끈 다음 정보로 뷰를 업데이트 할 수 있습니다. like참조 부모 객체

[myParent jobCompleted];

개체를 초기화 한 부모를 어떻게 참조해야합니까? 모니터하기 위해 옵저버를 만들 수 있도록 해당 클래스에 대한 사용자 정의 알림을 설정할 수 있습니까? 나는 당신의 구현에 대한 일도 가정거야 더 많은 정보의 부족에서

답변

0

..

그래서 나는 오른쪽 ... 당신은 모든 구문 분석을 수행하여 NSXMLParser에 대한합니다 (NSXMLParserDelegate 프로토콜을 구현) 대리자가 됐을까?

그래서 위임 프로토콜이라는 방법을 지정합니다

- (void)parserDidEndDocument:(NSXMLParser *)parser 

문서가 구문 분석되었을 때 그 대리인에 당신이 알고있는 것 구현하는 경우. 이제 viewcontroller에게이 이벤트에 대해 알릴 필요가 있습니다. 기본적으로이 작업에는 두 가지 방법이 있습니다. NSXMLParserDelegate와 뷰 컨트롤러 사이에 "단단한"연결을 설정하십시오. 이것은 기본적으로 특정 viewcontroller에 대한 속성을 지정하고 NSXMLParserDelegate 객체를 할당 한 경우 해당 속성이 viewcontroller를 가리 키도록 설정함으로써 수행됩니다. 그리고 당신이 parserDidEndDocument의 대리자 메서드에서 "부모"에

- (void)parserDidEndDocument:(NSXMLParser *)parser{ 
    [viewcontroller jobCompleted]; 
} 

다른 방법을 메시지를 보낼 수있을 것입니다 대리자 패턴을 활용하고 NSXMLParserDelegateDelegate 프로토콜을 지정 (다른 또는 이름이 무엇인가)하는 것입니다 .

@protocol NSXMLParserDelegateDelegate 

-(void)parserDidEndDocument:(NSXMLParserDelegate *)parserDelegate; 

@end 

을하고하는 .m 파일에 합성 기억하여 NSXMLParserDelegate

@interface NSXMLParserDelegate : NSObject<NSXMLParserDelegate>{ 
    id<NSXMLParserDelegateDelegate> _delegate; 
} 
@property (assign) id<NSXMLParserDelegateDelegate> _delegate; 

@end 

에 위임 속성을 : 즉,이 같은 것을 볼 수 있었다.

이렇게하는 것이 후자의 방법 일수록 연결이 끊어 지므로 주변을 쉽게 움직일 수 있습니다.

은 ... 알려주세요 .. 그렇지 않으면 도움이 희망 그리고 여기 사람들을 완전히 틀렸다면 - 그것을 본질적를 하드 코드 내가하려고했던

+0

) = 알려주세요. 그래서 ABC 내부에서 새로운 객체 XYZ를 만들면 XYZ 내에서 ABC를 참조 할 수 있습니다. – SonnyBurnette