Делегаты Objective-C против слушателей Java

Я прочитал кучу статей и материалов по делегатам Objective-C, пытаясь понять их. Исходя из Java, они очень похожи на слушателей Java. Например, допустим, у меня есть кнопка на Java. Когда кнопка нажата, я хочу, чтобы что-то произошло. Мой код может выглядеть примерно так:

ButtonListener myButtonListener = new ButtonListener();    
someButton.addActionListener(myButtonListener);
...

class ButtonListener implements ActionListener
{
   public void actionPerformed(ActionEvent e)
   {

    }
}

Примерно так. В объекте-c кажется, что я сделал бы что-то вроде вызова метода setDelegate для моей кнопки и передачи ему «слушателя» в качестве делегата. Фактический класс кнопки затем, вероятно, проверит, ответил ли этот делегат на какой-либо селектор (например, actionPerformed). Если я правильно об этом думаю, мне кажется, что делегаты подобны слушателям. Это верно? Есть ли какие-нибудь существенные отличия?

Спасибо!

19
задан JPC 23 May 2011 в 20:44
поделиться