在子线程中是要手动开启runloop的。主线程是默认开启的。
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
// 时钟,网络事件,
NSDefaultRunLoopMode
//用户交互(点击,拖动) 优先级高于上面,
NSRunLoopCommonModes
例子:有一个scrollView。一个NSTime是NSDefaultRunLoopMode类型的repeats:yes。那么当用户滚动scrollView的时候,或者点击不动,NSTime不进行打印。当改为NSRunLoopCommonModes ,滚动是时候也会进行打印这样会导致滑动会卡些。
子线程关闭runLoop(只是关闭子线程runloop,不会结束子线程正在执行的任务)
CFRunLoopStop([NSRunLoop currentRunLoop].getCFRunLoop);
网友评论