iOS 開(kāi)發(fā)之耗電優(yōu)化

一.代碼層面

1.合理使用NSDateFormatter 和 NSCalendar這種高開(kāi)銷(xiāo)對(duì)象

性能測(cè)試表明,NSDateFormatter的性能瓶頸是由于NSDate格式到NSString格式的轉(zhuǎn)化,所以把NSDateFormatter創(chuàng)建單例意義不大.推薦的做法是,把最常用到的日期格式做緩存.

static NSDateFormatter *cachedDateFormatter = nil;

+ (NSDateFormatter *)cachedDateFormatter {

if (!dateFormatter) {

dateFormatter = [[NSDateFormatter alloc] init];

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

}

return dateFormatter;

}

2.不要頻繁的刷新頁(yè)面,能刷新1行cell最好只刷新一行,盡量不要使用reloadData.

3.選擇正確的集合

NSArray,使用index來(lái)查找很快(插入和刪除很慢)

字典,使用鍵來(lái)查找很快

NSSets,是無(wú)序的,用鍵查找很快,插入/刪除很快

4.少用運(yùn)算獲得圓角,不論view.maskToBounds還是layer.clipToBounds都會(huì)有很大的資源開(kāi)銷(xiāo),必須要用圓角的話,不如把圖片本身就做成圓角

5.懶加載,不要一次性創(chuàng)建所有的subview,而是需要時(shí)才創(chuàng)建.

6.重用

可以模仿UITableView和UICollectionView,不要一次性創(chuàng)建所有的subview,而是需要時(shí)才創(chuàng)建.完成了使命,把他放入到一個(gè)可重用集合中

7.圖片處理

圖片與imageView相同大小,避免多余運(yùn)算

可以使用整副的圖片,增加應(yīng)用體積,但是節(jié)省CPU

可調(diào)大小的圖片,可以省去一些不必要的空間

CALayer,CoreGraphics,甚至OpenGL來(lái)繪制,消耗CPU

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

服務(wù)器相應(yīng)結(jié)果的緩存(圖片)

復(fù)雜計(jì)算結(jié)果的緩存(UITableView的行高)

9.盡量少用透明或半透明,會(huì)產(chǎn)生額外的運(yùn)算.

10.使用ARC減少內(nèi)存失誤,dealloc需要重寫(xiě)并對(duì)屬性置為nil

11.避免龐大的xib,storyBoard,盡量使用純代碼開(kāi)發(fā)

CPU層面

1.Timer的時(shí)間間隔不宜太短,滿(mǎn)足需求即可

2.線程適量,不宜過(guò)多,不要阻塞主線程

3.優(yōu)化算法,減少循環(huán)次數(shù)

4.定位和藍(lán)牙按需取用,定位之后要關(guān)閉或降低定位頻率

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、如何提高一個(gè)應(yīng)用程序的性能?1、使用ARC減少內(nèi)存失誤,dealloc需要重寫(xiě)并對(duì)屬性置nil。2、重用。3、...
    金歌漫舞閱讀 997評(píng)論 2 6
  • 一. 如何讓你的應(yīng)用程序更加省電?答:(1). 如果程序用到定位,需要在定位完畢之后關(guān)閉定位,或者降低定位的頻率,...
    Hevin_Chen閱讀 1,173評(píng)論 0 4
  • “虐狗父母”日常小故事 1. 有一次家庭聚會(huì),去吃的是火鍋。我總是會(huì)嫌棄我媽太胖,這次也不例外。 我看了看我媽那一...
    北野小姐姐閱讀 288評(píng)論 4 3