iOSProgramming: The Big Nerd Ranch Guide (4th Edition) 阅读笔记-关于 View 的 Redrawing 和 Run Loop
2015-06-07 10:30
447 查看
关于View
的 Redrawing
与 Run Loop
当 application
启动后,它会开始一个 run loop
用以监听如触摸一类的事件。当事件触发时,run loop
会寻找合适的处理事件方法,这个处理方法又会调用其他方法来处理,一旦所有方法被执行完毕,控制权会被交还给 run loop。
当 run loop
重新获得控制权后,它会检查一个名为 dirty list
的列表,其中包含需要重新绘制的 view
。然后 run loop
会在整个 hierarchy
中的 view
被重新叠加在一起前,发送 drawRect:
消息给 dirty list
中的 view
。
需要优化的部分(以便保持界面随时可响应):
只重新渲染必要的 view
每个 event
只发送一次 drawRect:
消息
在 run loop
的最后批量处理需要重绘的 view
以避免不必要的重复重绘
当完成了对事件的响应,并将控制权交还给 run loop
后,若该 view
发生了改变,则还需要将该 view
加入 dirty list。原生的
view 会自动进行这项工作,而自定义的 view
则需要手动向它自身发送 setNeedDisplay
消息。
可选的优化方法(不常用):
通过发送 setNeedsDisplayInRect:
消息,只标记 view
的一部分需要重绘。
该方法比较复杂且对性能没有显著提升,因此除非重绘过程明显拖慢了 app
,否则一般不使用。
的 Redrawing
与 Run Loop
当 application
启动后,它会开始一个 run loop
用以监听如触摸一类的事件。当事件触发时,run loop
会寻找合适的处理事件方法,这个处理方法又会调用其他方法来处理,一旦所有方法被执行完毕,控制权会被交还给 run loop。
当 run loop
重新获得控制权后,它会检查一个名为 dirty list
的列表,其中包含需要重新绘制的 view
。然后 run loop
会在整个 hierarchy
中的 view
被重新叠加在一起前,发送 drawRect:
消息给 dirty list
中的 view
。
需要优化的部分(以便保持界面随时可响应):
只重新渲染必要的 view
每个 event
只发送一次 drawRect:
消息
在 run loop
的最后批量处理需要重绘的 view
以避免不必要的重复重绘
当完成了对事件的响应,并将控制权交还给 run loop
后,若该 view
发生了改变,则还需要将该 view
加入 dirty list。原生的
view 会自动进行这项工作,而自定义的 view
则需要手动向它自身发送 setNeedDisplay
消息。
可选的优化方法(不常用):
通过发送 setNeedsDisplayInRect:
消息,只标记 view
的一部分需要重绘。
该方法比较复杂且对性能没有显著提升,因此除非重绘过程明显拖慢了 app
,否则一般不使用。
相关文章推荐
- iOS开发零基础教程之UILabel的新初始化方法
- NGUI -- UICamera(监听输入事件,鼠标,键盘等)
- valueForKeyPath用途
- 重用系统自带UITableViewCell
- String、StringBuilder与StringBuffer的区别
- requireJS入门
- 安卓蓝牙开发中google例子BluetoothChat的问题
- 【Java GUI】标签、按钮和按钮事件
- UIView与subview之间事件响应链
- Ubuntu下用cue文件对ape和wav文件自动分轨
- Distinct Subsequences
- java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/finder/DefaultClassFinder$InfoBuildingV
- IOS开发学习笔记042-UITableView总结2
- 读AbstractQueuedSynchronizer类源码
- 在virtualbox上安装mac os mavericks遇到Missing Bluetooth Controller Transport问题解决办法
- #UITable代理#
- 代码创建UITableView
- dequeueReusableCellWithIdentifier:
- setValuesForKeysWithDictionary
- UISlider - iOS - UI基础知识总结9