Вопрос

Сказать, например, у меня есть Ибция это подключено к Uibutton в интерфейсе строитель.

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

}

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

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

[self functionToBeCalled:];

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

[self functionToBeCalled:0];

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

Это было полезно?

Решение

Правильный путь - это либо:

- [self functionToBeCalled:nil] 

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

ИЛИ

- [self functionToBeCalled:self]

Пройти самостоятельно отправителя, который также правильный.

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top