2010-04-16 51 views
0
  1. 如果我產生一個輔助線程和線程方法調用其他方法,這些方法運行在輔助線程或主線程?通過線程問題

  2. 有沒有辦法確定在哪個線程上運行指定的代碼段?

回答

1
  1. 所有的方法都發生在當前線程,除非你做類似performSelectorInBackground:

  2. 你大概可以告訴,如果你在主線程中運行,通過比較[NSRunLoop currentRunLoop][NSRunLoop mainRunLoop]

另見:Threading Programming Guide

+1

(1),交替地指出:所有到對象的消息都是在它們發送的同一個線程上接收到的。除非它明確創建線程,否則沒有創建線程。 (「記錄爲創建線程」計爲「顯式創建線程」)(2):或者發送'[NSThread isMainThread]'。但是,程序不需要測試它是否在主線程上運行。任何給定的代碼應該(a)只運行在(main |次要)線程上,或者(b)不關心它運行的線程。 – 2010-04-16 05:41:00

+0

另請參見[NSThread currentThread]和[NSThread mainThread]。 – JeremyP 2010-04-16 15:08:58