我担任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];
在实践中,您将类的某些行为委托给组合使用的特定其他对象(而不是通过继承),以便在需要时调用委托方法(用于回调,提供特定实现等)。