2010-05-10 4 views
4

안녕하세요, iphone developement를 처음 접해 보셨습니다. 왜 setDelegate가 사용되는지, 어디에서 사용해야하는지 설명해 주실 수 있습니까?setDelegate 설명

[request setDelegate:sender]; 

미리 감사드립니다.

답변

6

위임자는 단순히 디자인 패턴입니다. 특수 구문 또는 언어 지원이 없습니다.

대리자는 특정 개체가 메시지를 보내는 개체이므로 대리인은 원래 개체가 디자인되지 않은 응용 프로그램 관련 세부 정보를 처리 할 수 ​​있습니다. 서브 클래 싱없이 동작을 사용자 정의하는 방법입니다.

2

일부 클래스 (예 : NSSpeechSynthesizer)에는 대리자 지원이 포함됩니다. 프로토콜과 달리 대리자 메서드를 제공하지 않아도 오류가 발생하지는 않습니다. 클래스는 항상 메서드를 제공하지만 대신 메서드를 제공합니다 (존재하는 경우). 예를 들어

는 NSSpeechSynthesizer 해당 클래스에서, 이전에 행한 제공, 당신은 동일하게 선언 방법을 제공하는 경우, 클래스 프레드, 그것은 대신 신디사이저의 자신의 방법을 호출됩니다

-(void) speechSynthesizer:(NSSpeechSynthesizer*)sender 
     didFinishSpeaking:(BOOL)complete; 

하는 방법이있다 ,

speech = [[NSSpeechSynthesizer alloc] initWithVoice:@"com.apple.speech.synthesis.voice.Albert"]; 

[speech setDelegate:self]; 

이것은 당신이

@interface Fred : NSObject <NSSpeechSynthesizerDelegate>, in that 
{ 
하여 대리인으로 자신을 발표하지 않은 경우 컴파일러가 경고합니다 있지만 작동합니다

. . .

(이 예는 Hillegass의 Cocoa Programming ...에서 변형되었습니다.)