Что такое Objective-C, эквивалентный делегату .Net? - PullRequest
1 голос
/ 23 января 2012

В .Net, когда у меня есть объект, который имеет событие, я могу зарегистрироваться, чтобы обработать это событие через делегата:

void Test()
{
    Button button = new Button();
    button.Click  += new EventHandler(OnClick);
}
void OnClick(object sender, EventArgs e)
{
    text1.Text = "The Button Was Clicked";
}

Как мне делать такие вещи в Objective-C?В частности, я пытаюсь обработать ccTouchEnded из SneakyButton.Я думал, что это будет что-то вроде этого:

SneakyButton* mybutton = [SneakyButton button];
[mybutton ccTouchEnded:self.onButtonDown];

- (void)onButtonDown:(UITouch *)touch withEvent:(UIEvent *)event
{
    CCLOG(@"The Button Was Clicked");
}

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Какао и CocoaTouch часто используют «Цель / Действие».

  • Цель: объектный объект.цель - это то, что сообщается.
  • Действие: селектор.действие является селектором для сообщения цели.

В этом смысле действие является эквивалентным.

Когда цель / действие выполняется,потребуется общая форма:

[target performSelector:action withObject:someParameter];

Конечно, список параметров будет изменяться в реальном мире.

Класс UIControl довольно мал -прочитайте это для получения дополнительной информации по этому вопросу.Это даст вам хорошее представление о поддержке элемента target / action и об интерфейсах, которые вы будете использовать для обработки этих событий.NSControl является аналогом Какао, но это гораздо больший класс - он определяет гораздо больше, чем интерфейсы Target / Action.

0 голосов
/ 23 января 2012

На самом деле, это может быть что-то вроде этого:

[mybutton ccTouchEnded:self.onButtonDown];

и

(void)myButtonClick:(id)sender {
    mylabel.text = @"The Button Was Clicked";
}

Эта ссылка может помочь: http://bynomial.com/blog/?p=13

0 голосов
/ 23 января 2012
[mybutton addTarget:self action:@selector(onButtonDown:withEvent:)
    forControlEvents:UIControlEventTouchUpInside];

Обратите внимание, что первым аргументом onButtonDown:withEvent: будет объект кнопки, а не объект касания.

Подробнее о шаблоне цели / действия можно прочитать в Руководство по основам какао .

...