RunLoop应用场景

RunLoop应用场景_第1张图片
屏幕快照 2016-12-29 上午7.13.10.png

场景一:NSTimer

RunLoop有多种model,每种model下面有多个source,RunLoop的运行是在不同model中切换的,所以如果把一个NSTimer添加到kCFRunLoopDefaultMode中的时候,如果滑动表视图,NSRunLoop会切换到UITrackingRunLoopMode模式下,导致NSTimer无法运行。

解决方法:将NSTimer添加到NSRunLoopCommonModes模式下,添加到NSRunLoopCommonModes模式下的source,RunLoop会检测里面的source有没有被执行,如果没有被执行,RunLoop就会把这个source添加到当前的Model中去,保证了NSTimer的运行。

场景二:线程保活

如果开辟了一个子线程,子线程中的任务执行完毕就会退出,销毁,如果想长时间的让子线程执行代码,那么把子线程添加到RunLoop中去。

场景三:

你可能感兴趣的:(RunLoop应用场景)