4

我从事 Java 开发已有几年了,大约一年前开始从事 Android 开发。在解决了 Android 之后,我尝试用 iOS 测试我的运气。到目前为止一切顺利,但我对“代表”的想法仍然很模糊。我在这里阅读了几篇文章,但仍然没有最好的想法。对我来说,它们似乎类似于 Java 中的继承,例如使用接口或抽象类。

任何人都可以以我可能理解的观点澄清吗?

提前致谢。

4

2 回答 2

10

不,这与继承的概念不同。

我会说这就像在 AWT/Swing 中使用的侦听器方法。例如:

class MyActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) { ... }
}

myComponent.addActionListener(new MyActionListener);

这与 ObjC 中的委托方法看起来像:

@class MyActionListener : NSObject<NSActionListener>

-(void) actionPerformed:(NSEvent*)event;

@end

myComponent.delegate = [[[MyActionListener alloc] init] autorelease];

在实践中,您将类的某些行为委托给组合使用的特定其他对象(而不是通过继承),以便在需要时调用委托方法(用于回调,或者提供特定的实现等等)

于 2012-04-05T16:52:56.343 回答
1

使用对象时,可以从其类继承一些回调方法。基本上,您可以在该对象有事件时做出响应。

对象类将该事件“委托”给您的类实例。

于 2012-04-05T16:50:09.823 回答