Object-C知识点 (四) 性能优化
#pragma mark - 性能优化
1. 行高一定要缓存 缓存行高是解决性能优化的最佳途径(除非刷新频率已经很高了,否则一定要缓存)
2. 尽量减少计算,所有需要素材提前计算好
3. 控件不要设置圆角半径,图片的拉伸要用代码去处理,减少CPU和GPU的消耗
4. 不要动态创建控件,需要展示的控件,都要提前创建好,在展示的时候根据数据隐藏或显示
5. cell中的层次越少越好,数量越少越好(实现更好理解的前提下尽可能少)
6. 高级优化 离屏渲染 self.layer.drawsAsynchronously = true
栅格化 self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale
异步绘制之后会生成一张独立的图像
cell在屏幕上滚动的时候,本质上滚动的是这张图片
如果cell的性能已经很好就不需要离屏渲染,离屏渲染回在CPU/GPU之间快速的切换,耗电厉害
#pragma mark - imageName和imageWithContentOfFile区别
imageName:加载图片
1.当对象销毁,图片对象不会随着一起销毁
2.加载的图片占据的内存较大:9.48
3.相同的图片只会加载一份到内存中,如果同时使用,使用同一个对象即可
imageWithContentOfFile:加载图片
1.当对象销毁的时候,图形对象会随着一起销毁
2.加载的图片,占据的内存较小:6.25
3.相同的图片会多次加载到内存中,如果同时使用图片,使用的是不同的对象
总结:
imageName:如果一些图片在多个界面都会使用,并且图片较小,使用频率高.(图标/小的背景图)
imageWithContentOfFile:只在一个地方使用,并且图片较大,使用频率不高.(版本新特性/相册)
#pragma mark - 图片的性能优化/模拟器的技巧
png图片是支持透明的 设置颜色的时候一般不建议设置透明色,会消耗GPU
Color Blended Layers 图像的混合区域进行由绿到红的高亮
Color MisAligned Images 会高亮那些拉伸和缩放的图片,没有正确对齐到边缘的图片(图片的周边透明)
Color Copied Images 复制的图像(一般不会出现,项目中一般不会使用)
Color Offscreen-Rendered Yellow 离屏渲染 shadowPath或者shouldRasterize来优化
#pragma mark - 向工程中添加文件的三种方式
一:黄色的文件夹,打包的时候不会建立目录,!!!主要保存程序文件!!!
黄色文件夹中的素材-- 不允许重名
二:蓝色的文件夹,打包的时候会建立目录,可以分目录的存储素材文件
素材可以重名
游戏的场景 background.png[草地/雪山/高山]
手机应用的皮肤:白天夜间模式
不要把程序文件放在蓝色的文件夹中
三: xxx.bundle文件 三方文件(程序文件+xxx.bundle)
可以按照黄色文件夹的方式拖拽,既会保留住bundle中的资源目录结构,程序文件也能使用
通常用在第三方框架的素材
可以避免文件重名 logo.png
#pragma mark - Widget开发
1.添加Widget 系统会自动创建Widget文件夹 里面有需要的文件
2.在原来的Info.plist文件中添加URL Types: 填写:BuildID 和URL Schemes
3.展示需要的按钮,关联方法 URL Schemes中的内容://字符串
4.点击按钮走到appDelegate的 application: openURL: options: 根据url.host(lieryang://host)来判断为哪一个
#pragma mark -- 软件开发动态修改界面
苹果现在关闭了js的动态更新的大门,但是还有很多的方法可以实现不需要用户更新软件,实时更新用户界面
appDelegate中访问服务器加载需要展示的json文件(json一定要小)存放到手机的沙盒文件 不需要监听失败
在主控制器
先从沙盒中加载json文件 加载到文件直接展示 没有加载到文件展示系统默认的界面
这样就可以实现服务器更新json数据,客户端就可以实时更新展示
更多内容--> 博客导航 每周一篇哟!!!
有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!
Object-C知识点 (四) 性能优化的更多相关文章
- [转] 擎天哥as3教程系列第二回——性能优化
所谓性能优化主要是让游戏loading和运行的时候不卡. 一 优化fla导出的swf的体积? 1, 在flash中,舞台上的元件最多,生成的swf越大,库里面有连接名的元件越多,swf越大.当舞台 ...
- ASP.NET MVC之如何看待内置配置来提高性能优化(四)
前言 前几篇我们比较基础的讲了下MVC中的知识,这一节我们穿插点知识,讲讲MVC中我们可以提高性能的办法. Razor视图引擎优化(优化一) 我们知道默认情况下配置MVC去解析一个视图会首先约定通过查 ...
- 第四章 Activity和Activity调用栈分析 系统信息与安全机制 性能优化
1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重新回到前台状态的时候会先调用onRestart方法,然 ...
- MySQL(十四)管理维护及性能优化
关于MySQL的学习,<MySQL必知必会>这本书呢,看完已经两个月了,一直被工作以及生活的一些琐事拖着,趁着今晚有空闲,就整理完了最后的几章学习笔记,接下来的学习计划呢, 应该是pyth ...
- App架构师实践指南四之性能优化一
App架构师实践指南四之性能优化一 1.性能维度常见用来衡量App性能的维度如图9-1所示.其中,性能指标包括电池(电量/温度).流量(上行流量/下行流量等).CPU(平均/最大/最小).内存 ...
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- 秋色园QBlog技术原理解析:性能优化篇:缓存总有失效时,构造持续的缓存方案(十四)
转载自:http://www.cyqdata.com/qblog/article-detail-38993 文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文 ...
- 关于Yahoo十四条军规与前端性能优化
关于Yahoo十四条军规与前端性能优化 热度 4已有 223 次阅读2014-8-3 15:01 |个人分类:前端相关|系统分类:前端优化| 前端优化, yahoo, 性能优化 启用Gzip压缩.Gz ...
- Linux性能优化实战学习笔记:第四十三讲
一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核 ...
随机推荐
- 导入csv文件到数据库
csv:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符 ...
- 用node编写自己的cli工具
工作中接到新项目,开发前都需要先规划项目目录,然后一个个创建文件,搭建sass编译环境,下载jquery,Swiper等类库... 这些准备工作都要花上不少时间.每做一个项目,都会遇到同样的问题,再重 ...
- 前端魔法堂:屏蔽Backspace导致页面回退
前言 前几天用户反映在录入资料时一不小心错按Backspace键,就会直接回退到是一个页面,导致之前辛辛苦苦录入的资料全部丢失了.哦?居然还有这种情况.下面我们来一起探讨一下吧! Windows系统 ...
- HTTP权威指南-HTTP概述
1.web服务器(HTTP服务器)使用的是HTTP协议,存储了因特网中的数据,当客户端发出请求时,服务器提供相应的数据.HTTP客户端和HTTP服务器共同构成了万维网的基本组件. 2.资源:Web服务 ...
- Linux系统下安装Mysql5.7.18教程收集分享
本人最近服务器新手入门,需要搭建一个在linux虚拟机上的服务器 第一天再装虚拟机,选的linux系统CentOS,一切顺利. 第二天,要给虚拟机装Mysql,但是需要用到命令行进行安装/操作等,我是 ...
- 【WPF】如何获取命令行参数
应用程序以 Main 方法为入口点,如果为 Main 方法指定一个 string[] 类型的参数,在程序运行时,这个参数会获取到传递给应用程序的命令行参数. 而 WPF 应用程序比较特殊,因为在VS中 ...
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 设计模式二:MVC
先附上部分代码: /* *MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. *Model(模型) - 模型代表一个存取数据的对 ...
- 模板C++ 03图论算法 2最短路之全源最短路(Floyd)
3.2最短路之全源最短路(Floyd) 这个算法用于求所有点对的最短距离.比调用n次SPFA的优点在于代码简单,时间复杂度为O(n^3).[无法计算含有负环的图] 依次扫描每一点(k),并以该点作为中 ...
- (原创)Python 自动化测试框架详解
自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下. 项目背景 B/S架构,进行用户界面的自动化测试 工具选择 python开发的自动化测试框架,足够灵活,可以随时根据需求进行变 ...