Использовать двоеточие: или нет с селекторами - PullRequest
4 голосов
/ 05 сентября 2011

Мне было интересно: какая разница между написанием имени селектора без двоеточия @selector(mySelector) или @selector(mySelector:) с двоеточием?

Как в:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWith... 
                                                       target:self
                                                       action:@selector(addAction:)];

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

Ответы [ 2 ]

13 голосов
/ 05 сентября 2011

Двоеточие необходимо после имени метода тогда и только тогда, когда метод принимает аргумент.

Нет параметров функции:

-(void)addAction {}

// Use ...@selector(addAction)...

Имеет параметр:

-(void)addAction:(id)info {}

// Use ...@selector(addAction:)...
1 голос
/ 05 сентября 2011

В некоторых случаях количество двоеточий может определять аргументы. Например, если вы передадите метод действия с одним двоеточием, он отправит sender в качестве первого аргумента. Если вы передадите селектор с двумя двоеточиями, вы также получите event. Без двоеточия, очевидно, нет аргументов.

...