iOS性能優(yōu)化(精一)

*導(dǎo)讀: *

如果你只會(huì)UITabelView的性能優(yōu)化唠摹,請(qǐng)不要說(shuō)你懂iOS性能優(yōu)化建峭,下面是我開(kāi)發(fā)這么多年項(xiàng)目中會(huì)影響性能的點(diǎn),我想會(huì)對(duì)你的項(xiàng)目起到很大的作用

性能優(yōu)化主要有這些:

1、性能優(yōu)化:內(nèi)存優(yōu)化裂明、速度優(yōu)化;
2太援、代碼優(yōu)化(后續(xù)迭代)闽晦;
3、程序的體積可以優(yōu)化

一提岔、APP性能優(yōu)化

1仙蛉、UITableViewCell的優(yōu)化
我曾經(jīng)在博客中有詳細(xì)說(shuō)明 ,這里就不細(xì)說(shuō)了
http://www.ios520junge.com/2014/06/06/由淺入深精講uitabelview/ ?
**
**
**2碱蒙、網(wǎng)絡(luò)請(qǐng)求優(yōu)化
**

①利用第三方AFN時(shí)做網(wǎng)絡(luò)隔離荠瘪,減少對(duì)第三方的依賴(lài)性;
②UI功能設(shè)計(jì)時(shí)赛惩,減少同一時(shí)間多次網(wǎng)絡(luò)請(qǐng)求的可能性哀墓;
③請(qǐng)求數(shù)據(jù)用JSON,如果用XML代表在網(wǎng)絡(luò)數(shù)據(jù)解析這塊會(huì)浪費(fèi)很多性能喷兼,兩者都是常見(jiàn)的數(shù)據(jù)編碼方式麸祷,壓縮模式的效率在很大程度上取決于待壓縮數(shù)據(jù),而通常情況下褒搔,JSON都是一種最高效的模式

**
**
**3阶牍、圖片加載的優(yōu)化
**

對(duì)于這個(gè)可以深入研究下SDWebImage框架的底層實(shí)現(xiàn)

4、在編碼過(guò)程中

①應(yīng)該做懶加載星瘾、單例走孽、封裝處理的有沒(méi)有處理,如:多個(gè)控制器基礎(chǔ)搭建很像琳状,有沒(méi)有抽baseController磕瓷;
②切圓角圖片時(shí),用的什么技術(shù)(直接切圓角和用貝塞爾路徑進(jìn)行畫(huà)是有很大影響的,后續(xù)會(huì)提供專(zhuān)門(mén)的文章進(jìn)行說(shuō)明)困食,切完后有沒(méi)有做緩存處理

補(bǔ)充:
5边翁、盡量把views設(shè)置為完全不透明

如果你有透明的Views你應(yīng)該設(shè)置它們的opaque(不透明)屬性為YES,如:黑色半透明的可以設(shè)置為一個(gè)灰色不透明的View替代硕盹,原因是這會(huì)使系統(tǒng)用一個(gè)最優(yōu)的方式渲染這些views

Apple的文檔對(duì)于為圖片設(shè)置透明屬性的描述是:
opaque這個(gè)屬性給渲染系統(tǒng)提供了一個(gè)如何處理這個(gè)view的提示符匾;YES, 渲染系統(tǒng)就認(rèn)為這個(gè)view是完全不透明的瘩例,這使得渲染系統(tǒng)優(yōu)化一些渲染過(guò)程和提高性能啊胶。如果設(shè)置為NO,渲染系統(tǒng)正常地和其它內(nèi)容組成這個(gè)View
只要一個(gè)視圖的不透明度小于1,就會(huì)導(dǎo)致blending(混合像素顏色的計(jì)算)垛贤,blending操作在iOS的圖形處理器(GPU)中完成的焰坪。舉個(gè)例子,我們把兩個(gè)圖層疊加在一起,如果第一個(gè)圖層的有透明效果,則最終像素的顏色計(jì)算需要將第二個(gè)圖層也考慮進(jìn)來(lái)。這一過(guò)程即為Blending聘惦。
為什么Blending會(huì)導(dǎo)致性能的損失某饰?
如果一個(gè)圖層是完全不透明的,則系統(tǒng)直接顯示該圖層的顏色即可。而如果圖層是帶透明效果的,則會(huì)引入更多的計(jì)算,因?yàn)樾枰严旅娴膱D層也包括進(jìn)來(lái),進(jìn)行混合后顏色的計(jì)算善绎。

6黔漂、避免過(guò)于龐大的XIB

加載一個(gè)XIB的時(shí)候所有內(nèi)容都被放在了內(nèi)存里,包括任何圖片涂邀,不會(huì)即刻用到的view瘟仿,你這就是在浪費(fèi)寶貴的內(nèi)存資源了箱锐,
storyboard僅在需要時(shí)實(shí)例化一個(gè)view controller.

7比勉、不要阻塞主線程

大部分阻礙主進(jìn)程的情形是你的app在做一些牽涉到讀寫(xiě)外部資源的I/O操作,比如存儲(chǔ)或者網(wǎng)絡(luò)

8驹止、不要在Image Views中調(diào)整圖片大小

保證圖片的大小和UIImageView的大小相同浩聋。在運(yùn)行中縮放圖片是很耗費(fèi)資源的,特別是UIImageView嵌套在UIScrollView中的情況下臊恋;

如果圖片是從遠(yuǎn)端服務(wù)加載的你不能控制圖片大小衣洁,用background thread,縮放一次抖仅,然后在UIImageView中使用縮放后的圖片

9坊夫、選擇正確的Collection

Apple有一個(gè) Collections Programming Topics(集合的編程問(wèn)題) 的文檔詳盡介紹了可用的classes間的差別和你該在哪些場(chǎng)景中使用它們,如:

* Arrays: 有序的一組值撤卢。使用index來(lái)lookup(查找)很快环凿,使用value lookup很慢, 插入/刪除很慢放吩。
* Dictionaries: 存儲(chǔ)鍵值對(duì)智听。 用鍵來(lái)查找比較快。
* Sets: 無(wú)序的一組值。用值來(lái)查找很快到推,插入/刪除很快考赛。

10、重用和延遲加載(lazy load) Views

點(diǎn)擊一個(gè)按鈕的時(shí)候需要呈現(xiàn)一個(gè)view的場(chǎng)景:

  • 創(chuàng)建并隱藏這個(gè)view當(dāng)這個(gè)screen加載的時(shí)候莉测,當(dāng)需要時(shí)顯示它颜骤;
  • 當(dāng)需要時(shí)才創(chuàng)建并展示。

方案一:更加消耗內(nèi)存悔雹。但app操作更靈敏
方案二:消耗更少內(nèi)存复哆,但是會(huì)在點(diǎn)擊按鈕的時(shí)候比第一種稍顯卡頓
選擇方案:點(diǎn)擊按鈕時(shí),懶加載這個(gè)view腌零,這樣就第一次卡頓梯找,以后都不卡頓

11、Cache

緩存那些不大可能改變但是需要經(jīng)常讀取的東西益涧。
如:遠(yuǎn)端服務(wù)器的響應(yīng)锈锤,圖片,甚至計(jì)算結(jié)果(UITableView的行高)

太多了闲询,會(huì)在《iOS性能優(yōu)化(精二)》中更新……

--

二久免、代碼優(yōu)化

一個(gè)app的開(kāi)發(fā)過(guò)程是短暫的。后面的是永無(wú)止境的維護(hù)扭弧,更新阎姥,迭代;
節(jié)省我們后期維護(hù)代碼的時(shí)間:

  • 代碼編寫(xiě)規(guī)范:聲明鸽捻、方法實(shí)現(xiàn)呼巴、懶加載、代理寫(xiě)在哪個(gè)地方
  • 代碼有沒(méi)有嚴(yán)格遵守MVC或者M(jìn)VVM設(shè)計(jì)模式御蒲,打造輕量級(jí)的Contreller
  • 方法名衣赶、屬性名取好,項(xiàng)目文檔編寫(xiě)清晰

更多將會(huì)在《iOS性能優(yōu)化(精二)》中更新……

喜歡請(qǐng)持續(xù)關(guān)注我的博客http://www.ios520junge.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厚满,一起剝皮案震驚了整個(gè)濱河市府瞄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碘箍,老刑警劉巖遵馆,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丰榴,居然都是意外死亡货邓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)多艇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逻恐,“玉大人,你說(shuō)我怎么就攤上這事「绰。” “怎么了拨匆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)挽拂。 經(jīng)常有香客問(wèn)我惭每,道長(zhǎng),這世上最難降的妖魔是什么亏栈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任台腥,我火速辦了婚禮,結(jié)果婚禮上绒北,老公的妹妹穿的比我還像新娘黎侈。我一直安慰自己,他們只是感情好闷游,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布峻汉。 她就那樣靜靜地躺著,像睡著了一般脐往。 火紅的嫁衣襯著肌膚如雪休吠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天业簿,我揣著相機(jī)與錄音瘤礁,去河邊找鬼。 笑死梅尤,一個(gè)胖子當(dāng)著我的面吹牛柜思,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播克饶,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酝蜒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼誊辉!你這毒婦竟也來(lái)了矾湃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤堕澄,失蹤者是張志新(化名)和其女友劉穎邀跃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛙紫,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拍屑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坑傅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僵驰。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒜茴,到底是詐尸還是另有隱情星爪,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布粉私,位于F島的核電站顽腾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诺核。R本人自食惡果不足惜抄肖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窖杀。 院中可真熱鬧漓摩,春花似錦、人聲如沸入客。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痊项。三九已至锅风,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞍泉,已是汗流浹背皱埠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咖驮,地道東北人边器。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像托修,于是被迫代替她去往敵國(guó)和親忘巧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • 在本系列上一篇《iOS 2D Graphic(1)—— Concept 基本概念和原理》中睦刃,我們已經(jīng)了解了關(guān)于iO...
    ac3閱讀 2,200評(píng)論 2 11
  • 導(dǎo)讀 性能對(duì) iOS 應(yīng)用的開(kāi)發(fā)尤其重要砚嘴,如果你的應(yīng)用失去反應(yīng)或者很慢,失望的用戶會(huì)把他們的失望寫(xiě)滿App Sto...
    HelloYeah閱讀 38,172評(píng)論 31 453
  • 性能對(duì) iOS 應(yīng)用的開(kāi)發(fā)尤其重要涩拙,如果你的應(yīng)用失去反應(yīng)或者很慢际长,失望的用戶會(huì)把他們的失望寫(xiě)滿App Store的...
    你飛躍俊杰閱讀 1,072評(píng)論 0 2
  • 1.啟動(dòng)時(shí)間 應(yīng)用啟動(dòng)時(shí)間長(zhǎng)短對(duì)用戶第一次體驗(yàn)至關(guān)重要,同時(shí)系統(tǒng)對(duì)應(yīng)用的啟動(dòng)兴泥、恢復(fù)等狀態(tài)的運(yùn)行時(shí)間也有嚴(yán)格的要求工育,...
    心至靜行至遠(yuǎn)閱讀 1,475評(píng)論 2 4
  • 5月加入python學(xué)習(xí)小組。@向右奔跑 老師和運(yùn)營(yíng)團(tuán)隊(duì)開(kāi)了一個(gè)微信群給我們學(xué)習(xí)的同學(xué)搓彻。大家學(xué)習(xí)熱情都很高如绸,每天都...
    E2017閱讀 292評(píng)論 0 0