关于ios中的setNeedsDisplay和setNeedsLayout
我们可能对这两个命令并不陌生,setNeedsDisplay调用drawRect方法来实现view的绘制,而setNeedsLayout则调用layoutSubView来实现view中subView的重新布局,问题是为何要如此设计呢,直接调用drawRect和layoutSubView不是更省事吗,何必多次一举呢。
假设我们采用的是直接调用drawRect的机制,先考虑这样一个问题,,现在有两个UIViewControllerA和B,A为当前view的viewController,如果此时在A中调用[B.viewdrawRect],这样B的view无论如何都会调用drawRect的方法重新绘制一遍,这样问题就出来了,有必要吗,毕竟现在显示的是A中的view!B重新绘制一遍就调用了drawRect中的方法,完全是在浪费系统资源啊,而通过setNeedsDisplay,ios就会很聪明的判断出不需要调用drawRect的方法,这样就避免了资源的重复调用!
同理,setNeedsLayout也采用了同样的机制来避免资源的重复利用!
由此我们可以推断出这中设计的精妙之处,ios由很多精妙的设计来缓解手机资源不足的现状,比如cell的重复利用等等。
相关推荐
leitingdulante 2020-11-03
huangkun 2020-10-22
leitingdulante 2020-10-21
硬币0 2020-10-15
moses 2020-09-22
ZuoYanDeHuangHun 2020-09-18
chsoft 2020-09-17
fanxiaoxuan 2020-09-17
惠秀宝 2020-09-08
zhousanzhou 2020-08-26
MatrixHero 2020-08-20
xjp 2020-08-17
定格 2020-08-15
Mryiyi 2020-08-07
好好学习天天 2020-07-28
好好学习天天 2020-07-21
Mryiyi 2020-07-08
RocketJ 2020-07-03