0%

AES简介

高级加密标准(AES,Advanced Encryption Standard),是最为常见的加密算法,所谓对称加密就是使用相同的密钥进行加密和解密

阅读全文 »

第三部分:标准库(STL)

第十五章:标准库简介

第十六章:STLString

第十七章:STLArray

第十八章:STLList

第十九章:STLSet

第二十章:STLMap

第四部分:其他

第廿三章:STL算法

第廿四章:栈和队列

第六章:变量和常量

AutoLayout小结

AutoLayout什么

Auto Layout ,是苹果公司提供的一个基于约束布局,动态计算视图大小和位置的库.集成于XCode

AutoLayout实现

Auto Layout拥有一套Layout Engine引擎,由它来主导页面的布局。App启动后,主线程的Run Loop会一直处于监听状态,当约束发生变化(1)后会触发Deffered Layout Pass(延迟布局传递),在里面做容错处理(约束丢失等情况)并把view标识为dirty状态,然后Run Loop再次进入监听阶段。当下一次刷新屏幕动作来临(或者是调用layoutIfNeeded)时,Layout Engine 会从上到下调用 layoutSubviews() ,通过 Cassowary算法计算各个子视图的位置,算出来后将子视图的frame从Layout Engine拷贝出来,接下来的过程就跟手写frame是一样的了。

  • 添加、删除视图时会触发约束变化。Activating 或 Deactivating,设置 Constant 或 Priority 时也会触发约束变化

Auto Layout 性能问题

Cassowary 是以高效的界面线性方程求解算法被提出来的。它解决的是界面的线性规划问题。它能够对界面进行高效添加和修改更新操作。

在iOS 12 以前对页面视图之间关系不复杂时候autolayout性能不会出现指数级影响。但是兄弟视图之间有关联的话就会出现所述问题,其原因是

iOS 12 之前,很多约束变化时都会重新创建一个计算引擎 NSISEnginer 将约束关系重新加进来,然后重新计算。结果就是,涉及到的约束关系变多时,新的计算引擎需要重新计算,最终导致计算量呈指数级增加.

什么时候用

简单布局用AutoLayout,复杂布局还是要Frame,修改和更新更清晰

卡顿出现原因?

首先CPU计算显示内容,例如视图创建,布局计算、图片解码、文本绘制等;接着 CPU 会将计算好的内容提交到 GPU进行合成、渲染。随后 GPU 会把渲染结果提交到帧缓冲区去,等待VSync 信号到来时显示到屏幕上。如果此时下一个VSync 信号到来时,CPU或GPU都没有完成相应的工作时,则那一帧将会丢弃。在每秒低于30帧时候人眼能感知卡顿存在。

阅读全文 »

起因

内心极度忐忑,静不下心来工作,想找一一些与工作无关的事情来缓解下心情。看到next 的主题都升级6X了,于是乎决定升级一下当前的主题。

阅读全文 »

前言

断断续续用了大半年读完这个时间读完这个,心情是极度复杂. .你tm一个章节举几个🌰就行了?还21天?是21X24小时才能读完书吧。然而读完书,总结还是要写的。(虽然代码还不是不懂,写不好算法)故只写部分现在工作和未来的工作可能用的代码。。。。

阅读全文 »