苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4973|回复: 5

[综合] iOS性能优化的一些建议

[复制链接]
发表于 2018-12-24 14:57:25 | 显示全部楼层 |阅读模式



1.对象的创建会分配内存、调整属性(view的frame、bounds、transform等)、甚至还有读取文件等操作,比较消耗资源。

2.用轻量级的对象代替重量级的对象,比如如果不需要响应时间的话,可以使用CALayer代替UIView。

3.不涉及UI操作尽量放到后台线程去处理。

4.通过StoryBoard创建视图对象时,其资源消耗会比直接通过代码创建视图对象要大得多

5.如果对象可以复用,尽量加到复用池中。

6.视图的布局计算是最为常见的消耗CPU的地方。如果能在后台线程提前计算好视图布局、并且对视图布局进行缓存,那么这块基本就不会产生性能问题(性能最好的布局是直接使用frame布局,如果不想手动调整frame属性,可以使用第三方工具方法替代:top、bottom、left、right、width、height)

7.对于复杂的视图,使用autolayout会随着视图数量的增长,CPU的消耗也会呈指数增长。

8.文本计算宽度会占用很大一部分资源,并且不可避免(也可以使用[NSAttributedStringBoundingRectWithSize:Option:context]来计算文本宽度)。有这方面优化需求的,可以使用Core Text绘制文本,自己计算宽高。

9.图片的解码,当使用UImage或CGImageSource的那几个方法创建图片时,图片数据并不会立刻解码,只有当图片设置到UImageView或者CALayer.contents中去,并且CALayer被提交到GPU前,CGImage中的数据才会得到解码,这一步是发生在主线程的,并且不可避免。如果想绕开这个机制,常见的做法是在后台线程先把图片绘制到CGBitMapContext中,然后从Bitmap直接创建图片。

10.图片的绘制通常是指那些以CG开头的方法,把图像绘制到画布中,如何从画布创建图片并显示这样的一个过程。最常见的方法就是[UIView drawRect:]。由于CoreGraphic方法通常都是线程安全的,所以图像的绘制可以很容易放到后台线程中进行。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-24 15:00:30 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-24 15:33:07 | 显示全部楼层
真是难得给力的帖子啊。
发表于 2018-12-26 08:52:03 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
发表于 2018-12-26 11:18:23 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-27 09:39:00 | 显示全部楼层
看到这帖子真是高兴!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 15:45

© 2014-2021

快速回复 返回顶部 返回列表