Отправка отправителя 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.

One Solution collect form web for “Отправка отправителя IBAction как id или определенного класса”

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

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

 - (IBAction)buttonPressed { // Do something. } 
  • нужен пользовательский LibraryPicker с начальным изображением на пользовательской камереОверлей UIImagePickerController iOS8
  • Панель навигации Навигация Элементы навигации, в результате чего верхняя область кнопок на толкаемом контроллере просмотра не может быть недоступна
  • Добавление заголовка UIButton в UITableView
  • shuffle NSMutableArray без повторения и отображения в UIButton
  • ios 8 - кнопки в горизонтальном прокрутке, перехватывающие событие панорамы - прокрутка не работает
  • Где я могу найти красивые кнопки для iPhone?
  • Кнопка в UITableViewCell не отвечает в соответствии с ios 7
  • Применить CAShapeLayer к основному UIView, кроме UIButton
  • Как сделать UIButton перетаскиваемым, но не активировать событие click
  • Как отображать изображение над кнопкой? -Swift
  • iPhone / iPad с закругленными кнопками и png-файлами
  • Interesting Posts

    Crop and Scale CGContext – iOS

    Сообщение об аварии в UITableview reloadData

    Учитывая CIImage, какой самый быстрый способ записать данные на диск?

    AVAudioplayer не воспроизводит песню из библиотеки iPod в iOS 5

    Ожидание до тех пор, пока не будут выполнены два блока асинхронизации перед запуском другого блока

    Какова логика наличия изменяемых и неизменных версий классов, таких как NSArray, NSDictionary и т. Д. В Objective C?

    Выполнить Segue в ViewDidLoad

    Иконки типа пользовательского документа iOS

    Приложение расширения приложений для iOS 8 и Host в отдельных файлах проекта. Возможно ли это в Xcode 6?

    UIPickerView внутри UIScrollView hitTest для отключения Scrollview?

    Внешнее сопоставление отношений ключей с RestKit

    Прямая ссылка на страницу «Написать отзыв» для приложения в App Store

    Разделите HTML на страницы без строк, разрезанных пополам

    Как добавить текст ярлыка в DetailDisclosureButton?

    Имеет ли листинг адрес (id) побочные эффекты ??? Является ли адрес 0xbfffe8d0 особенным? (исправлено: проблема была с _NSCallStackArray)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.