摘要:
1.cell的view和contentView的区别 1.1 addSubView UITableViewCell实例上添加子视图,有两种方式:[cell addSubview:view]或[cell.contentView addSubview:view],一般情况下,两种方式没有区别。但是在多选 阅读全文
摘要:
删除分支 新建一个分支 A 后,要想把 A 分支删除掉,只需跳到另一个分支上去,选中 A 分支然后右击,在弹出的菜单栏中选中 【删除 A 分支】即可; 在分支下建一个文件夹 左上的然后弹出选框,在【新分支】处建一个 Develop 的文件夹,在 Delvelop 文件夹下新建一个 feature 分 阅读全文
摘要:
1. Operation 设置依赖关系 先看看如何设置operation的依赖关系。 啥叫依赖关系?有啥用啊?打个比方咱们要做一个听音乐的付费App项目,需要经过登陆、付费、下载、播放四个步骤。其实一看就明白,这四个操作是有先后顺序的,但假如所有的操作都是多线程,咱们怎么控制顺序?通过设置“优先级” 阅读全文
摘要:
1. 进程和线程 1.1 进程 进程:正在运行的应用程序叫进程 进程之间都是独立的,运行在专用且受保护的内存空间中 两个进程之间无法通讯 通俗的理解,手机上同时开启了两个App。这两个App肯定是在不同的进程中的。所以这两个App之间是独立的,内存中的数据不能互相窜来窜去,两个App之间也没有办法进 阅读全文
摘要:
1.取消过去的接口 说起 GCD, 大家肯定回想起类似 dispatch_async 这样的语法。 GCD 的这个语法模式无论是和 Objc 还是 Swift 的整体风格都不太打掉。 所以 Swift 3 中对它的语法进行了彻底的改写。 比如最常用的,在一个异步队列中读取数据, 然后再返回主线程更新 阅读全文
摘要:
减少图层数量 初始化图层,处理图层,打包通过IPC发给渲染引擎,转化成OpenGL几何图形,这些是一个图层的大致资源开销。事实上,一次性能够在屏幕上显示的最大图层数量也是有限的。 确切的限制数量取决于iOS设备,图层类型,图层内容和属性等。但是总得说来可以容纳上百或上千个,下面我们将演示即使图层本身 阅读全文
摘要:
混合和过度绘制 在第12章有提到,GPU每一帧可以绘制的像素有一个最大限制(就是所谓的fill rate),这个情况下可以轻易地绘制整个屏幕的所有像素。但是如果由于重叠图层的关系需要不停地重绘同一区域的话,掉帧就可能发生了。 GPU会放弃绘制那些完全被其他图层遮挡的像素,但是要计算出一个图层是否被遮 阅读全文
摘要:
离屏渲染 当图层属性的混合体被指定为在未预合成之前不能直接在屏幕中绘制时,屏幕外渲染就被唤起了。屏幕外渲染并不意味着软件绘制,但是它意味着图层必须在被显示之前在一个屏幕外上下文中被渲染(不论CPU还是GPU)。图层的以下属性将会触发屏幕外绘制: 圆角(当和maskToBounds一起使用时) 图层蒙 阅读全文
只有注册用户登录后才能阅读该文。 阅读全文
摘要:
文件格式 图片加载性能取决于加载大图的时间和解压小图时间的权衡。很多苹果的文档都说PNG是iOS所有图片加载的最好格式。但这是极度误导的过时信息了。 PNG图片使用的无损压缩算法可以比使用JPEG的图片做到更快地解压,但是由于闪存访问的原因,这些加载的时间并没有什么区别。 清单14.6展示了标准的应 阅读全文