我阅读了很多关于 Objective-C 委托(delegate)的文章和读物,试图理解它们。它们来自 Java,看起来非常像 Java 监听器。例如,假设我有一个 Java 按钮。按下按钮时,我希望发生某些事情。我的代码可能看起来像这样:
ButtonListener myButtonListener = new ButtonListener();
someButton.addActionListener(myButtonListener);
...
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
类似的东西。在 objective-c 中,我似乎会为我的按钮调用 setDelegate 方法并将其作为委托(delegate)传递给“监听器”。然后,实际的按钮类可能会检查该委托(delegate)是否响应了某个选择器(即 actionPerformed)。如果我以正确的方式思考这个问题,那么委托(delegate)们似乎就像听众一样。那是对的吗?有什么主要区别吗?
谢谢!
最佳答案
你几乎就在那儿的按钮上。唯一真正的区别是 obj-c 中的委托(delegate)通常实现多个函数来对与它们委托(delegate)的对象相关的事件执行各种操作。例如,UITextViewDelegate 有以下方法:
– textViewShouldBeginEditing:
– textViewDidBeginEditing:
– textViewShouldEndEditing:
– textViewDidEndEditing:
我发现的唯一真正区别是您不能像在 Java 中那样以内联方式创建委托(delegate):
someButton.setOnClickListener ( new View.OnClickListener {
@Override
public void onClick() {
//do stuff
}
});
关于java - Objective-C 委托(delegate)与 Java 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102812/