2011-10-07 69 views
1

如何確定給定函數調用正在運行的線程?確定當前範圍的線程

我想確保在主線程上調用一個方法來更新一些UI元素。

我可以舉例說明嗎?

- (void) myMethod { 
    if (<current thread is not main thread>) { 
     [self performSelectorOnMainThread: @selector(myMethod) withObject: nil waitUntilDone: NO]; 
    } else { 
     // my code here 
    } 
} 

回答

3
+1

工作;兩個警告。有時候,鎖定到runloop而不是線程會更有用(每個線程有一個runloop,所以它是同義詞,但有時候更有意義的說明)。如果使用dispatch_ *或NSOperation * API,則線程可能相對隨機。 – bbum

+0

謝謝比爾..我試圖讓Errol保持簡單,但你記住了很多要點。 –

+0

簡單是可取的...直到它停止工作。 :) – bbum