Objective-C executeSelector, когда использовать двоеточие? - PullRequest
0 голосов
/ 10 октября 2009

Размещаете ли вы имя метода только после: если вы вызываете посторонний объект?

Почему-то

[self performSelector:@selector(myMethod:) withObject:nil afterDelay:5];

Не работает, но

[self performSelector:@selector(myMethod) withObject:nil afterDelay:5];

ли!

EDIT:

Объявлен в реализации класса, но не интерфейса.

- (void)myMethod
{
   // Some stuff
}

Ответы [ 2 ]

9 голосов
/ 10 октября 2009

Двоеточие представляет аргумент метода. Поскольку myMethod не принимает аргументов, его селектор не может иметь двоеточие. Если у вас было несколько аргументов, как это ...

- (void)myMethod:(id)method object:(id)object enabled:(BOOL)bool {
  // Some Stuff
}

... селектором будет @ селектор (myMethod: object: enabled:)

4 голосов
/ 10 октября 2009

В Objective-C двоеточия являются частью имени метода. То есть myMethod и myMethod: - это разные селекторы (и в вашем случае существует только последний).

Например, для метода, объявленного как:

-(void)doSomethingWithFoo:(int)foo andBar:(int)bar;

Селектор: doSomethingWithFoo:andBar:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...