2013-05-27 18 views

回答

6

有在NSRunLoopofficial reference documentation的開始警告右:

警告:NSRunLoop類一般是不被認爲是線程安全的及其方法應該只的範圍內被稱爲當前線程。你不應該嘗試調用在不同線程中運行的NSRunLoop對象的方法,否則可能會導致意外的結果。

0

不,它不是。

閱讀從NSRunLoop Reference

警告的文檔:在NSRunLoop類一般不被認爲是 線程安全的,並且它的方法應該只有當前線程的上下文 內調用。您不應該嘗試調用在不同線程中運行的 NSRunLoop對象的方法,因爲這樣做可能會導致意外的結果 。

同時檢查NSRunLoop answer on SOF

0

它不僅是不是線程安全的,它是明確,具體的線程。傳遞NSObject之間消息的每個線程必須包含它自己的NSRunLoop。訪問另一個線程的runloop可能會導致像-autorelease d對象這樣的跟蹤循環,像NSTimer s這樣的定時事件,以及像-runUntilDate:這樣的東西設置的子runloops。另外,我假設NSRunLoop將使用線程特定的數據來存儲一些信息。這意味着您可能會導致線程特定數據和對象存儲數據之間的數據不匹配。