iOS性能优化(三)

版本记录

版本号 时间
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体验。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容