我从事 Java 开发已有多年,大约一年前转向 Android 开发。在解决了 Android 问题之后,我尝试用 iOS 测试一下自己的运气。到目前为止一切顺利,但我对“委托(delegate)”的想法仍然很模糊。我在这里阅读了几篇文章,但仍然没有最好的主意。在我看来,它们似乎类似于 Java 中的继承,例如使用接口(interface)或抽象类。
谁能以我可能理解的观点澄清一下?
提前致谢。
最佳答案
不,这不是继承的同一个概念。
我会说这就像 AWT/Swing 中使用的监听器方法。例如:
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) { ... }
}
myComponent.addActionListener(new MyActionListener);
在 ObjC 中使用委托(delegate)方法看起来像:
@class MyActionListener : NSObject<NSActionListener>
-(void) actionPerformed:(NSEvent*)event;
@end
myComponent.delegate = [[[MyActionListener alloc] init] autorelease];
在实践中,您委托(delegate)一个类的一些行为给组合使用的特定其他对象(而不是继承),以便在需要时调用委托(delegate)方法(用于回调,要么提供具体的实现等等)
关于java - 来自 Java 开发人员 POV 的 iOS 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032666/