2010-04-16 54 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