Каков наилучший способ вызова IBAction с помощью кода?

Скажем, например, у меня есть IBAction, который подключен к UIButton в построителе интерфейса.

- (IBAction)functionToBeCalled:(id)sender { // do something here } 

В моем коде, скажем, например, в другом методе, что лучший способ назвать это IBAction ?

Если я попытаюсь вызвать его так, я получаю сообщение об ошибке:

 [self functionToBeCalled:]; 

Но, если я попытаюсь назвать это так (немного обманываю, думаю), он отлично работает:

 [self functionToBeCalled:0]; 

Каков правильный способ назвать это правильно?

Правильный способ:

 - [self functionToBeCalled:nil] 

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

ИЛИ

 - [self functionToBeCalled:self] 

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

Какая из них зависит от того, что именно делает функция, и от того, что она ожидает от отправителя.

ИМО, вызывающий IBAction должен запускаться только действиями пользовательского интерфейса (например, нажатием кнопки). Если вам нужно запустить код из нескольких мест, вы можете извлечь этот код из IBAction в новый метод и вызвать этот метод из обоих мест

 - (IBAction)onButtonTap:(id)sender { [self doSomething]; } 

Это позволяет вам выполнять дополнительную логику на основе отправителя (возможно, вы можете назначить одно действие нескольким кнопкам и решить, что делать на основе параметра sender ). А также уменьшает количество кода, которое необходимо записать в IBAction (что сохраняет чистоту вашего контроллера).

  • Создание выпадающего списка
  • Объединение перспективного преобразования UIView с другими CATranform3Ds
  • Создание двух прокруток UIScrollView в виде одного или перенос инерции между видами прокрутки
  • Добавление тени к слою приводит к ухудшению внешнего вида сетчатки
  • Содержимое UIDocument loadFromContents повреждено EXC_BAD_ACCESS?
  • Достижение глубочайшего уровня ребенка в NSDictionary
  • iPhone «слайд для разблокировки»
  • Копирование UITableViewCell
  • Нарисовать редактируемые углы с помощью drawRect?
  • Определить URL-адрес в NSString
  • Текст нижнего колонтитула UITableViewCell в iOS
  • Interesting Posts

    XCode загружает файлы данных в iPad «Разрешение запрещено»?

    Что означает $ 0 в закрытии в Swift?

    Обрабатывать недействительный accessToken с FBSession openActiveSessionWithReadPermissions в Facebook iOS 3.1.1 SDK

    contentSize не обновляется после вызова reloadData в UICollectionView

    Как вы распространяете бета-приложения iOS в своей команде, не используя тестовый полет?

    Просмотр контейнера сбрасывается, как будто у него есть UINavigationBar?

    Исходное изображение UISearchBar

    Импорт пользовательских фреймов

    Что такое файл .a (как libcrypto.a)?

    Самый простой способ бросить ошибку / исключение с помощью специального сообщения в Swift 2?

    Как сохранить данные, когда приложение iphone переходит в состояние фона или переднего плана?

    Как получить ссылку на UIPopoverController при использовании адаптивного segue?

    iOS 7 uitabbar показывает, невидимый на ios8

    Как отключить всю обработку изображения, чтобы увидеть фактические, немодифицированные пиксели, когда я увеличиваю масштаб?

    Приложение зависает при удалении документа iCloud при выполнении  руководства с использованием NSFileCoordinator и DispatchQueue

    Давайте будем гением компьютера.