2010-06-27 31 views
1

我有工作代碼: [self performSelector:@selector(doSomething)];IPhone performSelector issue

但是當我改變這一行到:

[自performSelector:@selector(doSomething的)withObject:無afterDelay:1.0];

它報告錯誤 - 無法識別的選擇....

你能告訴我是什麼問題嗎?

謝謝

+0

請發送更多的代碼。如果.. @ selector(doSomething :)不起作用,那麼你的方法肯定會出錯 – vodkhang 2010-06-27 05:03:23

回答

5

如果你改變了你的方法把一個對象參數,那麼你需要改變@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%確定。

+0

hmm。您對另一個建議答案的評論意味着其他事情正在發生。發佈doSomething方法代碼? – Dad 2010-06-27 04:59:05

+1

也許給我們提供實際的錯誤信息,是否說_which_選擇器無法識別? – Dad 2010-06-27 05:00:12

1

它看起來像你的問題是,你的選擇是doSomething而不是doSomething:。如果沒有:,則消息中無處插入對象,即使是nil

+0

[self performSelector:@selector(doSomething :) withObject:nil afterDelay:1.0]; 仍然是相同的錯誤 – user349302 2010-06-27 04:55:49

+0

看到下面,簡單的測試代碼,顯示你似乎不需要有一個選擇器,當使用'peformSelector:withObject:afterDelay:'...(我不知道所以必須寫一個快速測試來確認)。 – Dad 2010-06-27 06:03:27

0

自我還在嗎?你可能試圖發送消息給NSZombie。