掘友等级
获得徽章 7
面试必考题:为什么圆角和裁剪后iOS绘制会触发离屏渲染?
答:默认情况下每个视图都是完全独立绘制渲染的。而当某个父视图设置了圆角和裁剪并且又有子视图时,父视图只会对自身进行裁剪绘制和渲染。当子视图绘制时就要考虑被父视图裁剪部分的绘制渲染处理,因此需要反复递归回溯和拷贝父视图的渲染上下文和裁剪信息,再和子视图做合并处理,以便完成最终的裁剪效果。这样势必产生大量的时间和内存的开销。解决的方法是当父视图被裁剪和有圆角并且有子视图时,就单独的开辟一块绘制上下文,把自身和所有子视图的内容都统一绘制在这个上下文中,这样子视图也不需要再单独绘制了,所有裁剪都会统一处理。当父视图绘制完成时再将开辟的缓冲上下文拷贝到屏幕上下文中去。这个过程就是离屏渲染!!所以离屏渲染其实和我们先将内容绘制在位图内存上下文然后再统一拷贝到屏幕上下文中的双缓存技术是非常相似的。使用离屏渲染主要因为iOS内部的视图独立绘制技术所导致的一些缺陷而不得不才用的技术。
发现很多程序员特别喜欢用多线程和gcd中的线程池,其实对于前端开发来说一般情况下除非是IO和特别耗时的计算可能需要多线程外,主线程其实没有那么脆弱和不堪,都可以在主线程中执行,如果任何处理都依赖多线程来做,线程上下文交换,同步处理等等机制反而会影响到程序的最终性能。
分享一个平时小重构和代码修改后验证的小技巧:为了保证我们重构后的代码以及修改后的代码能够确认被运行,我们可以在修改处或者重构处设置调试断点,然后运行程序,确保所有断点都要运行到。每运行到一处断点时验证当前的逻辑是否正确,如果正确则把此处的断点取消,一直到所有设置的断点都被取消了则表明你所进行的重构和修改都被覆盖到了。
在一片未知的水域给船只设定好事先规划好的路线,这将使得船只撞上冰山的可能性达到最大。-- 《公司战略计划》The rise and Fall of strategic of planning
当产品经理和你说这些,真实含义是啥?
1. 大佬好!= 沙雕猴子,来活了!
2. 可以插个 CR 么?= 这个 CR 必须给老子做了,你以为是问句你就可以拒绝吗?
3. 这个需求可不可以这个月就上?= 其实今年能上去就行,不上也没啥事。
4. 一会我去座位上找你 = 沙雕猴子,你摊上需求了!
5. 我们分析了用户的行为习惯 = 我按照自己的想法拍了下脑袋
6. 这个需求上线之后我们分析下数据 = 等需求上线之后我再拍脑袋
7. 我找 XXX 大佬说下吧 = 这个猴子不行我就换另外个猴子呗
8. XXX(Leader)都同意了 = 其实 XXX 根本没同意,骗一个是一个
9. 不好意思 = 上次拍脑袋上的功能得下线了
10. 这个 PRD 我回去更新下 = 我要是更新了我是你孙子!!!
当年facebook的RN出来后国内掀起一阵RN改造和学习的狂潮,然后各大厂家都在争相建设自己的RN平台。现在Google的flutter出来后国内又掀起一阵flutter改造和学习的狂潮,然后各大厂家都在争相的建设自己的flutter平台。这种现象再次暴露了中国程序员只会做应用而不会做技术的短板。只会做1到1.5而不会做0到1的不争事实。也许我孤陋寡闻,但是我觉得美国那几家顶级的软件公司是肯定不会这样做的。呼吁BAT能有一家站起来担负起做出一个0到1的真牛框架。
下一页