代码之家  ›  专栏  ›  技术社区  ›  sudo rm -rf

如何调用基于协议的方法?

  •  0
  • sudo rm -rf  · 技术社区  · 14 年前

    我是新手。这是一个iPhone实用程序项目。

    @protocol FlipsideViewControllerDelegate
    - (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
    - (void)updateLabels:(NSString *)text :(BOOL)isOn;
    @end
    

    - (void)updateLabels:(NSString *)text :(BOOL)isOn {
        [nameLabel setText:text]; 
         if (isOn)
          [onLabel setText:(@"ON")];
         else
          [onLabel setText:(@"OFF")];
         }
    

    现在我想用 updateLabels 方法在名为 buttonClick

    2 回复  |  直到 14 年前
        1
  •  0
  •   Alex Martini    14 年前

    委托是第二个对象,委托,它采用委托协议。然后FlipsideViewController对象调用委托对象上的方法(属于该协议的一部分)。这意味着FlipsideViewController不应该实现FlipsideViewControllerDelegate协议,因此您不应该从该协议中调用方法。

    以下是有关授权的更多信息: http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html%23//apple_ref/doc/uid/TP40008195-CH14-SW1

    http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Protocol.html%23//apple_ref/doc/uid/TP40008195-CH45-SW1

        2
  •  2
  •   Dave DeLong    14 年前

    [self updateLabels:@"foo" :YES];

    顺便说一句,虽然可以对一个方法使用一个未命名的参数(就像您所做的那样),但是如果没有很好的理由,这通常被认为是不好的做法。:)