Отправка отправителя IBAction как id или определенного класса

Я вижу два подхода к обработке объектов отправителя в операторах 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.

  • ios - Программно закодированный UIButton не отображается на моем представлении
  • Метод setImage forState устанавливает изображение для всех состояний на кнопке
  • Текст заголовка UIButton не обновляется, даже если я обновляю его в главной теме
  • Как настроить изображение imageSize для UIButton?
  • UIButton TouchUpInside иногда не срабатывает
  • Невозможно использовать пользовательский шрифт в UIButton
  • UIButton setTitle: longTitle forState: контрактная строка заголовка
  • UIButton внутри UIImagePickerController.cameraOverlayView не отвечает
  • One Solution collect form web for “Отправка отправителя IBAction как id или определенного класса”

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

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

     - (IBAction)buttonPressed { // Do something. } 
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.