iOS开发之常用技术点春天来咯iOS高级文章

iOS耗电优化

2019-01-05  本文已影响1人  lltree

使用xcode打开你的工程,然后插上手机,使用真机running项目(必须是真机),然后comand + 6,点击Energy Impact


image.png

其中颜色表示

其中名词解释:

  • cost(蓝色)表示运行项目代码需要电量
  • Overhead(红色)表示开销,包括CPU的唤起,无线电模组(蓝牙&WiFi),和其他系统资源的调用等

影响电量的五个因素,灰色表示有电量消耗,白色表示没有电量消耗

耗电量优化

1 网络方面优化

2 定位优化

大致的意思就是如果这个属性设置成YES(默认的也是YES),那么系统会检测如果设备有一段时间没有移动,就会自动停掉位置更新服务。这里需要注意的是,一旦定位服务停止了,只有当用户再次开启App的时候定位服务才会重新启动。
这里的一段时间是系统自动判定的,可以通过设置activityTypeproperty这个属性来决定这个时间的长短。
API的意思是,类似导航类的App,系统检验的时间会稍长一点,想运动类的App,就会比导航类的短一点。但是具体时间还是由系统来决定。

一.代码层面

1.合理使用NSDateFormatter 和 NSCalendar这种高开销对象

性能测试表明,NSDateFormatter的性能瓶颈是由于NSDate格式到NSString格式的转化,所以把NSDateFormatter创建单例意义不大.推荐的做法是,把最常用到的日期格式做缓存.

static NSDateFormatter *cachedDateFormatter = nil;

+ (NSDateFormatter *)cachedDateFormatter {

if (!dateFormatter) {

dateFormatter = [[NSDateFormatter alloc] init];


[dateFormatter setDateFormat: @“YYYY-MM-dd HH:mm:ss”];

}

return dateFormatter;

}

2.不要频繁的刷新页面,能刷新1行cell最好只刷新一行,尽量不要使用reloadData.

3 选择正确的集合

4 少用运算获得圆角,不论view.maskToBounds还是layer.clipToBounds都会有很大的资源开销,必须要用圆角的话,不如把图片本身就做成圆角

5 懒加载,不要一次性创建所有的subview,而是需要时才创建.

6 重用

7 图片处理

8.cache,cache,cache(缓存所有需要的)

9.尽量少用透明或半透明,会产生额外的运算.

10.使用ARC减少内存失误,dealloc需要重写并对属性置为nil

11.避免庞大的xib,storyBoard,尽量使用纯代码开发

CPU层面

1.Timer的时间间隔不宜太短,满足需求即可

2.线程适量,不宜过多,不要阻塞主线程

3.优化算法,减少循环次数

4.定位和蓝牙按需取用,定位之后要关闭或降低定位频率

上一篇下一篇

猜你喜欢

热点阅读