2011-03-01 53 views
0

我處於必須更改withObject參數值的情況。我有以下代碼:在調用之前更改performSelector的withObject參數!

[self performSelector:@selector(refreshScore:) withObject:self.args afterDelay:7.0]; 

self.args是一個簡單的NSString,其初始值爲@「refreshScore」。當refreshScore被觸發我確保它只能前進,如果沒有在參數的值,如下圖所示:

-(void) refreshScore:(NSString *) argument 
{ 
    if([argument length] == 0) return; 
} 

這工作得很好!但是我接下來有一個CCMenu和CCMenuItemImage。當我點擊CCMenuItemImage時被觸發了另一個選擇器,它使self.args = @「」; (空)。但它不會對refreshScore方法產生任何影響,並且它的行爲仍然與self.args的初始值一樣。

CCMenuItemImage的選擇器是否在單獨的某個線程上觸發?

回答

0

放置了兩個斷點(在CCMenuItemImage中單擊回調並在調用performSelector的方法中)並查看首先觸發的內容。 99%,如果一切都好,這將是第一例。檢查值是否真的改變了

+0

謝謝!我檢查過,它看起來像refreshScore是選擇器方法是緩存或放在隊列中,以便隨後的PARAMS處理。如果我只是使用公共財產,而不是參數參數,那麼它工作正常!謝謝! – azamsharp 2011-03-01 20:13:58

相關問題