IPhone executeSelector вопрос - PullRequest
1 голос
/ 27 июня 2010

У меня есть рабочий код: [self executeSelector: @selector (doSomething)];

но когда я изменяю эту строку на:

[self executeSelector: @selector (doSomething) withObject: nil afterDelay: 1.0];

сообщает об ошибке - нераспознанный селектор ....

Не могли бы вы сказать мне, в чем проблема?

спасибо

Ответы [ 3 ]

5 голосов
/ 27 июня 2010

Если вы изменили свой метод для получения параметра объекта, вам нужно изменить аргумент @selector(), включив в него ":", например, @selector( doSomething: )

Это работает:

- (void) foo
{
    NSLog(@"foo!");
}


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{        
    [self performSelector: @selector(foo) withObject: nil afterDelay: 0.1];
}

Таким образом, вы можете передать селектор, который не принимает никаких параметров, в performSelector:withObject:afterDelay:, и я предполагаю, что он игнорирует параметр withObject:, в котором я не был уверен на 100%.

1 голос
/ 27 июня 2010

Похоже, ваша проблема в том, что ваш селектор doSomething, а не doSomething:.Без : в сообщении некуда вставить объект, даже nil.

0 голосов
/ 06 октября 2011

Я все еще рядом? Возможно, вы пытаетесь отправить сообщение NSZombie.

...