setDelegate解释

时间:2010-05-10 09:15:27

标签: ios delegates

您好我是iphone开发的新手,任何人都可以解释为什么使用setDelegate,我们应该在哪里使用它。

[request setDelegate:sender];

提前感谢。

2 个答案:

答案 0 :(得分:6)

代表只是一种设计模式;没有特殊的语法或语言支持。

委托只是另一个对象在发生某些事情时发送消息的对象,因此委托可以处理原始对象未设计的特定于应用程序的详细信息。这是一种在没有子类化的情况下自定义行为的方法。

答案 1 :(得分:2)

某些类(例如NSSpeechSynthesizer)包含委托支持。与协议不同,未能提供委托方法不会引发错误:类始终提供方法,但如果存在则调用您的方法。

例如,NSSpeechSynthesizer有一个方法

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

如果你提供一个相同声明的方法,在Fred类中,它将被调用而不是合成器自己的方法,前提是你已经在那个类中做过,

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

[speech setDelegate:self];

这将有效,但如果您没有通过

宣布自己为委托,编译器会发出警告
@interface Fred : NSObject <NSSpeechSynthesizerDelegate>, in that 
{

。 。

(这个例子改编自Hillegass的Cocoa Programming ...)。