2009-10-03 89 views
0

我有一個選擇和目標,並呼籲像這樣performSelectorOnMainThread工作,但performSelector不是爲什麼?

[target performSelectorOnMainThread:(SEL)selector withObject:nil waitUntilDone:FALSE]; 

的方法,但之後我改成了這一點,這是行不通的

[target performSelector:(SEL)selector withObject:nil afterDelay:0]; 

任何想法?

我不想在主線程上執行該任務,因爲它滯後於用戶界面。

通過不工作我的意思是,它根本不會調用該方法。我在模擬器中使用了im debu模式,並確認它沒有被調用。

+0

你能更具體地說「不行」嗎?你爲什麼選擇選擇器到(SEL),是不是已經有一個? – 2009-10-03 19:10:18

回答

11

我假設你從主線程以外的地方發送消息。 Cocoa只是爲主線程創建一個運行循環,對於其他線程你必須自己構建一個線程。方法performSelector:withObject:afterDelay:安排下一次通過運行循環的消息。所以如果沒有,這個消息將不會被髮送。

對於您的情況,您爲什麼不直接發送[target performSelector:selector withObject:nil];?你不需要運行循環,消息將立即發送(在同一個線程上)。

+0

拯救生命。這非常棘手,沒有很好地記錄! – erotsppa 2009-10-03 19:27:30

相關問題