不做长篇大论,不贴代码,只做简单总结
-
AutoreleasePool什么时候释放?
面试经常被问到这个问题,这个问的就是Run Loop这个点
每个runloop中都创建一个Autorelease Pool,在一个runloop进入BeforeWaiting(休眠)的时候AutoreleasePool就会释放
--
- Run Loop的应用?
有一次面试被问到AFNetWorking 中的URLConnection 与Run Loop有什么关系? ………啊?
网络请求需要Run Loop去驱动,URLConnection中单独开启了一个名为“AFNetWorking”的线程,在runloop run 之前会添加一个 NSMachPort端口,为了保证RunLoop 不退出。这样就有了一个网络请求线程去服务整个应用,不会占用主线程资源
--
- TableView的延迟加载优化
在cell里面的图片设置放置在defaultRunLoopMode里面,在滑动的时候图片就不会加载。
--
ScrollerView滑动的时候不影响Timer?
默认scheduledTimer创建Timer的时是在NSRunLoopDefaultMode 里,滑动的时候会进入NSRunLoopTrackingMode状态,若不希望timer被ScrollerView影响,需要添加到NSRunLoopCommonModes状态
CFRunLoopObserverRef,这个是用来观测RunLoop的状态变化