##目标
开启一个子线程,并添加一个定时器,在进入界面时启动定时器,在退出界面时销毁定时器。
##demo地址
https://github.com/pengwj/blogWork/tree/master/code/TimerTest
##注意点
1、定时器默认添加在NSDefaultRunLoopMode,界面滑动时会导致定时器停止执行。
2、子线程中RunLoop默认不启动,所以需要往里面添加任务,然后手动启动runloop。
##RunLoop
每一个线程创建的时候,都至少会创建一个RunLoop,孙源大佬的视频中有提到RunLoop可以嵌套,这里就不展开了。
#####系统默认注册五个Mode的RunLoop
- kCFRunLoopDefaultMode:app的默认mode,一般代码执行都在这个mode先运行的。
- UITrackingRunLoopMode:界面滑动mode,为了提升滑动时的流畅度,当界面滚动时(多用于ScrollView的滑动触摸)系统会强制切换到该mode下。
- UIInitializationRunLoopMode:在app刚启动时会调用该mode,执行启动相关操作,启动后就不再使用。
- GSEventReceiveRunLoopMode:接收内部系统事件的mode,开发中通常用不上。
- kCFRunLoopCommonModes:组合mode,并不是一个实际的mode,当注册该mode时会同时在kCFRunLoopDefaultMode和UITrac