【问题标题】:setDelegate explanationsetDelegate 解释
【发布时间】:2010-05-10 09:15:26
【问题描述】:

您好,我是 iphone 开发新手,谁能解释一下为什么要使用 setDelegate,我们应该在哪里使用它。

[request setDelegate:sender];

提前致谢。

【问题讨论】:

    标签: ios delegates


    【解决方案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 
      {
      

      。 . .

      (此示例改编自 Cocoa Programming... by Hillegass)。

      【讨论】:

        猜你喜欢
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        相关资源
        最近更新 更多