我担任Java开发人员已有几年了,大约一年前开始从事Android开发。在解决Android问题之后,我随后尝试使用iOS测试我的运气。到目前为止还算不错,但是我对“代表”的想法仍然很迷惑。我在这里读过几篇文章,但对它们仍然没有最好的主意。对我来说,它们似乎类似于Java中的继承,例如使用接口或抽象类。

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

提前致谢。

最佳答案

不,那不是继承的概念。

我想说的就像是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];

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

08-24 21:45