Приведение отправителя в IBAction как идентификатор или определенный класс - PullRequest
5 голосов
/ 31 августа 2011

Я вижу два подхода к обработке объектов отправителя в инструкциях IBAction.Первый выглядит так:

-(IBAction)buttonPressed:(id)sender{
 UIButton*someButton=(UIButton*)sender;
 //do something with someButton.tag or whatever
 }

Другой кажется проще:

 -(IBAction)buttonPressed:(UIButton*)sender{
  //do something with sender.tag or whatever
  }

Я обычно выбираю версию 2. Любая конкретная причина предпочесть один стиль другому, если вы знаете, чтотолько кнопка будет отправлять этому методу?

Я могу видеть, где версия 1 хороша, если что-нибудь может быть отправителем, как кнопка, или переключатель или ползунок и т. д. Но есливы ищете UIButton свойства, такие как tag, это не будет иметь большого значения, если ваш отправитель не является UIButton.Таким образом, версия 2 кажется намного более простой.

Просто подумал, что увижу, упускаю ли я очевидную причину, чтобы предпочесть версию 1.

1 Ответ

5 голосов
/ 31 августа 2011

Не вижу проблем с использованием второй версии. Я обычно использую вторую версию, только используя первую версию, если отправителем может быть более одного типа объекта. Затем, если метод должен знать, какой тип объекта, метод может запросить отправителя, прежде чем привести отправителя к определенному типу.

Еще чаще мне не нужно обращаться к отправителю, поэтому я просто использую:

- (IBAction)buttonPressed {
  // Do something.
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...