2011-03-30 57 views
0

我從後臺線程創建了一個帶有[NSTimer scheduledTimerWithTimerInterval:target:selector:...]的計時器
看起來從後臺線程創建的計時器不會調用作爲參數給出的選擇器。(iPhone)從後臺線程啓動計時器?

有什麼特別的我需要從後臺線程運行一個計時器?
謝謝

  • 編輯

這裏的序列

performSelectorInBackground: pushViewController 

從的viewController的初始化序列,

I alloc a timer with the above method. 

和定時器選擇器將不會被調用。

+0

代碼示例請,我們不是通靈! – occulus 2011-03-30 09:35:47

+0

謝謝。但實際的代碼請不要「轉述」。強烈建議閱讀此:https://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx Quote:'不要給我代碼是「像」的東西真正的代碼,但顯然不是真正的代碼' – occulus 2011-03-30 09:42:42

回答

1

您應該只對UI執行操作 - 比如推送視圖控制器和更改UI項 - 從主線程中執行。正如你所看到的,如果你不這樣做,事情就會破裂。

請參閱Cocoa基礎知識指南中標題爲「Cocoa框架線程安全嗎?」的部分:它說:「所有的UIKit對象只能在主線程中使用。」

原來的答覆

沒有什麼特別需要的。選擇器將在您執行scheduleTimer調用的線程上被調用。

+0

@occulus謝謝你的回覆,是的,我附加了「:」,我設置了一個bp來查看它是否被調用。 – eugene 2011-03-30 09:42:23

+0

一旦我改變了pe​​rformselectorinbackground:pushViewController部分爲普通[navController pushViewController ..],定時器工作正常 – eugene 2011-03-30 09:43:32

+0

我的猜測是,執行「pushViewController」的線程消失了時間視圖加載..和計時器被連接到現在-gone線程(如果有一個將定時器附加到線程的概念) – eugene 2011-03-30 09:45:09