runloop关系篇

NSRunloop关系篇

1.NSRunloop 与 NSTimer

.https://blog.csdn.net/u014795020/article/details/72084735

.http://www.360doc.com/content/16/1013/16/11764545_598159238.shtml

1.NSRunloop与NSTimer

主线程还是子线程会把timer自动添加到当前runloop.


runloop关系篇_第1张图片
995387AB-4DB0-44F8-BEE8-E42A4100B7F4.png
runloop关系篇_第2张图片
995387AB-4DB0-44F8-BEE8-E42A4100B7F4.png

timer停止,model中没有事件,runloop 会停止,线程也就停止了。

https://www.jianshu.com/p/b5c27669e2c1

http://www.360doc.com/content/16/1013/16/11764545_598159238.shtml

RunLoop与NSURLConnection

https://blog.csdn.net/weixin_34179968/article/details/88004386

AFNetworking3.0后为什么不再需要常驻线程?

https://blog.csdn.net/enuola/article/details/8077918

http://www.pianshen.com/article/7813250945/

AFN 的做法是把网络请求的发起和解析都放在同一个子线程中进行,但由于子线程默认不开启 runloop,它会向一个 C语言程序那样在运行完所有代码后退出线程。而网络请求是异步的,这会导致获取到请求数据时,线程已经退出,代理方法没有机会执行。因此,AFN 的做法是使用一个 runloop 来保证线程不死~

runloop关系篇_第3张图片
4AB08F16-DCFB-416E-B70D-0ABC5B262960.png

1.网络也是runloop mode的一个事件,Source0,当RunloopMode里面执行完,runloop 停止,线程停止。

3.NSConnection:

https://blog.csdn.net/u012186949/article/details/38047109

4.NSUrlSession:

https://blog.csdn.net/u012361288/article/details/54607551

2.performSelector里的aSelector方法被延迟调用问题。

  • (void)performSelector:(SEL)aSelector withObject:(id)arg; afterDelay:(NSTimeInterval)delay;

这个方法其实是增加了一个定时器,而这时aSelector应该是被添加到了队列的最后面,所以要等当前调用此方法的函数执行完毕后,selector方法才会执行。

runloop关系篇_第4张图片
屏幕快照 2019-03-18 下午1.10.43.png

你可能感兴趣的:(runloop关系篇)