您好我是iphone开发的新手,任何人都可以解释为什么使用setDelegate,我们应该在哪里使用它。
[request setDelegate:sender];
提前感谢。
答案 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 ...)。