java - 来自 Java 开发人员 POV 的 iOS 委托(delegate)

标签 java iphone objective-c ios delegates

我从事 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/

相关文章:

java - 我可以在接口(interface)扩展 CrudRepository 中定义哪些方法列表

iphone - 调整 UIWebView 大小时抗锯齿不起作用

iphone - 以编程方式检测 ScrollView 外的触摸

iphone - 解析 url 字符串

ios - iOS应用双向数据交换

java - 使用 Binder 从 Android 应用程序写入 GPIO 值

java - 如何使您的编辑文本字母数字?安卓例子

java - 如何使用 JodaTime 表示转换回标准时间期间的 "repeated"小时?

ios - 本地/远程IOS设备上的Visual Studio Cordova应用

objective-c - Mac App 上的 "Lock"屏幕