版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.07.12 |
前言
很多时候我们做APP,不是完成相关的功能就行,很多时候需要我们不断的进行优化,特别对于像淘宝和微信等巨型app来说,如果没有优化,那会是什么样的结果,一定会有很多人“脱坑”,又何谈发展啊。感兴趣的可以看一下上一篇。
1. iOS性能优化(一)
2. iOS性能优化(二)
这一篇我就结合自己的工程项目说一下性能优化。
项目情况
一般的app最少都是三个主页,主页是给别人的第一感觉,我的工程里面涉及到也是三个首页,其中两个首页是我完成的,但是和其他的项目一样我同样碰到了性能问题,由于主页需要加载大量的图片,而图片从服务端拉取的是原生图片,很明显结果很糟糕非常卡,滑动起来会卡的飞起甚至被杀死。
项目优化
前面说了存在上面的问题,所以首先就是定位问题的所在位置,跟了一会找到问题的所在:
- 切圆角的时候使用的是原生图片切圆角,这个下载很消耗时间,切圆角由于采用CG框架,切起来不是很耗时间,这是其中的一个问题。
- 节目主页中,节目封面采用的也是原生图片,和上面的问题类似,原生上传的图像不做处理,每一个都很大,所以下拉刷新或者快速拉动的时候,内存暴涨80M瞬间到240M,所以会很卡或者被杀死。
下面我们就进行优化。
优化方案
这里采用的优化方案,是不改变上传图像,当上传到七牛的时候,保存为几种不同样式的图像,七牛支持自定义图像样式,所以这里就自定义几种图像样式。
- 头像样式
- 节目封面样式
目前项目中就用到这两种样式,暂时加这两个,后续会再增加。
前面说过七牛,这里在和大家熟悉下,存储的图片都放在下面的界面。
这里可以看到,外部访问是由外链默认域名拼接下面的文件名进行访问的。
下面我们增加几种图片的自定义样式。
下面我们看一下代码中我们需要做什么?其实就是请求对应位置(比如头像),就请求定义好的图片样式而不是请求原图。在代码中大家最好定义为宏。
#define kAvatarPic @"-avatarPic"//头像缩略
//这个是请求自定义的头像样式
NSString *avaStr = [[memberListArrM[i] objectForKey:@"userAvatar"] zbStringByAppendingString:kAvatarPic];
[imageView sd_setCircleImageWithURL:[NSURL URLWithString:avaStr] placeholderImage:[UIImage imageNamed:@"avatar_placeholder"]];
//封面图片
[self.coverImageView sd_setImageWithURL:[NSURL URLWithString:[shortVideoModel.shortVideoPic zbStringByAppendingString:kShortVideoPic]]
这里是头像样式,节目封面也是这么做,不同的就是自定义图片格式的字符串不一样而已,这里就不多说了。
优化结果
根据上面的消息,我们就对主页进行了优化,经过实测,界面内存一直是80M,就不会暴涨了,更不会闪退了。
后记
优化的路还很长,以后还会继续努力,优化的方向也有很多,我们要在内存管理、图片渲染,数据存储方式等很多方面进行优化,以带给大家更好的app体验。