首页 > 试题广场 >

NSRunLoop的以下描述错误的是()

[单选题]
NSRunLoop的以下描述错误的是()
  • Runloop并不是由系统自动控制的
  • 有3类对象可以被run loop监控:sources,timers,observers
  • 线程是默认启动run loop的
  • NSTimer可手动添加到新建的NSRunLoop中
推荐
C
A:Runloop的作用在于当有事情要做时它使当前的thread工作,没有事情做时又使thread 休眠sleep。Runloop并不是由系统自动控制的,尤其是对那些新建的次线程需要对其进行显示的控制。
B:有3类对象可以被run loop监控:sources、timers、observers。当这些对象需要处理的时候,为了接收回调,首先必须通过 CFRunLoopAddSource ,CFRunLoopAddTimer 或者 CFRunLoopAddObserver 把这些对象放入run loop。 要停止接收它的回调,可以通过CFRunLoopRemoveSource从run loop中移除某个对象。 
C:每一个线程都有自己的runloop, 主线程是默认开启的,创建的子线程要手动开启,因为NSApplication 只启动main applicaiton thread。
D:NSTimer默认添加到当前NSRunLoop中,也可以手动制定添加到自己新建的NSRunLoop的中。

编辑于 2015-01-30 10:10:35 回复(2)
[-]. 描述错误的是C
 - 只有主线程默认启动run loop,子线程等需要手动启动,且在特定的场景下需要启动:需要使用NSTimer等。
发表于 2015-01-14 16:56:19 回复(1)
主线程默认开启runloop,子线程默认没有开启,需要手动开启
发表于 2019-05-19 22:46:45 回复(0)
 主线程默认启动runlopp,子线程需要手动启动runloop。
发表于 2017-09-03 10:32:15 回复(0)
主线程是默认启动run loop的,子线程需要手动创建
发表于 2017-03-26 14:34:13 回复(0)
Runloop并不是由系统自动控制的
有3类对象可以被run loop监控:sources,timers,observers
NSTimer可手动添加到新建的NSRunLoop中
发表于 2015-10-22 22:25:57 回复(0)