精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入淺出-iOS程序性能優(yōu)化

移動(dòng)開(kāi)發(fā) iOS
iOS應(yīng)用是非常注重用戶體驗(yàn)的,不光是要求界面設(shè)計(jì)合理美觀,也要求各種UI的反應(yīng)靈敏,我相信大家對(duì)那種一拖就卡卡卡的 TableView 應(yīng)用沒(méi)什么好印象。

iOS應(yīng)用是非常注重用戶體驗(yàn)的,不光是要求界面設(shè)計(jì)合理美觀,也要求各種UI的反應(yīng)靈敏,我相信大家對(duì)那種一拖就卡卡卡的 TableView 應(yīng)用沒(méi)什么好印象。還記得12306么,那個(gè)速度,相信大家都受不了。為了提高 iOS 的運(yùn)行速度,下面我將拋磚引玉介紹一些我實(shí)踐過(guò)的用來(lái)提供iOS程序運(yùn)行效率的方法,與大家分享,希望能得到更多的反饋和建議。

1,計(jì)算代碼運(yùn)行時(shí)間:相信數(shù)據(jù),不要太相信感覺(jué)。不過(guò)要注意模擬器和真機(jī)的差異。

最簡(jiǎn)單的工具就是 NSDate,但精度不是太好。

  1. NSDate* tmpStartData = [[NSDate date] retain]; 
  2. //You code here... 
  3. double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData]; 
  4. NSLog(@">>>>>>>>>>cost time = %f", deltaTime); 

或者將運(yùn)行代碼放到如下方法的 block 參數(shù)中,然后返回所運(yùn)行的時(shí)間:

  1. #import <mach/mach_time.h>  // for mach_absolute_time() and friends   
  2.    
  3. CGFloat BNRTimeBlock (void (^block)(void)) {   
  4.     mach_timebase_info_data_t info;   
  5.     if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0;   
  6.    
  7.     uint64_t start = mach_absolute_time ();   
  8.     block ();   
  9.     uint64_t end = mach_absolute_time ();   
  10.     uint64_t elapsed = end - start;   
  11.    
  12.     uint64_t nanos = elapsed * info.numer / info.denom;   
  13.     return (CGFloat)nanos / NSEC_PER_SEC;   
  14. }  

2,善用性能分析工具。

XCode 自帶了很多強(qiáng)大的分析工具,包括靜態(tài) Analyze 工具,以及運(yùn)行時(shí) Profile 工具。

3,關(guān)于圖片

優(yōu)先使用[UIImage imageNamed:@""];

與[[UIImage alloc] initWithContentsOfFile:] 和 [UIImage alloc [initWithData:]] 相比,[UIImage imageNamed:]有著更好的效率,這是因?yàn)?iOS 會(huì)自帶 cache 通過(guò) [UIImage imageNamed:] 載入的圖像,但該方法有一個(gè)缺點(diǎn),那就是只能載入應(yīng)用程序 bundle 中的圖像,像網(wǎng)絡(luò)下載的圖像就無(wú)能無(wú)力了。我習(xí)慣的做法是自定義一個(gè) ImageCache 類,自己來(lái) cache 圖像。

盡量不要使用全屏大小的背景圖片;使用 gradient 圖片來(lái)取代硬編碼的 gradient;gradient 圖片應(yīng)當(dāng)盡可能窄,然后將之拉伸運(yùn)用到實(shí)際場(chǎng)合中去。

4,對(duì)于結(jié)構(gòu)復(fù)雜的 View,使用 drawRect 自繪而不是從 nib 中載入。

5,對(duì)于 TableView,重用 cell;減少 cell 初始化的工作量,延遲裝載;定制復(fù)雜 cell 時(shí),使用 drawRect 自繪;Cache 盡可能多的東西,包括 cell 高度;盡可能讓 cell 不透明;避免使用圖像特性,比如 gradients。

6,在線程中使用 autoreleasepool。

7,將一些不太重要的任務(wù)放在 idle 時(shí)運(yùn)行。

  1. - (void)idleNotificationMethod { 
  2.     // do something here 
  3.  
  4. - (void)registerForIdleNotification  
  5.     [[NSNotificationCenter defaultCenter] addObserver:self 
  6.         selector:@selector(idleNotificationMethod) 
  7.         name:@"IdleNotification" 
  8.         object:nil]; 
  9.     NSNotification *notification = [NSNotification 
  10.         notificationWithName:@"IdleNotification" object:nil]; 
  11.     [[NSNotificationQueue defaultQueue] enqueueNotification:notification 
  12.       postingStyle:NSPostWhenIdle]; 
  13. }  

8,不要在 viewWillAppear 中做費(fèi)時(shí)的操作。

viewWillAppear: 在 view 顯示之前被調(diào)用,出于效率考慮,在這個(gè)方法中不要處理復(fù)雜費(fèi)時(shí)的事情;只應(yīng)該在這個(gè)方法設(shè)置 view 的顯示屬性之類的簡(jiǎn)單事情,比如背景色,字體等。要不然,用戶會(huì)明顯感覺(jué)到 view 顯示遲鈍。

9,使用多線程來(lái)延遲加載資源。比如常見(jiàn)的 TableViewCell 中的網(wǎng)絡(luò)圖像顯示,先使用一個(gè)默認(rèn)圖像,然后開(kāi)啟線程下載網(wǎng)絡(luò)圖像,當(dāng)圖像下載完成之后,再替換默認(rèn)圖像。

10,關(guān)于后臺(tái)任務(wù)

系統(tǒng)進(jìn)入 background 之后,一般只有10分鐘的運(yùn)行時(shí)間,因此有很多值得注意的事項(xiàng):

  • a) 盡量減少內(nèi)存的使用。當(dāng)內(nèi)存不足時(shí),iOS將kill那些消耗內(nèi)存最多的 App。
  • b) 釋放所有的共享資源,比如 Calendar 與 Address book。當(dāng)應(yīng)用程序進(jìn)入后臺(tái)時(shí),如果它還在使用或沒(méi)有釋放共享資源,iOS會(huì)立即kill掉該應(yīng)用程序。
  • c) 正確處理App生命周期事件。當(dāng)進(jìn)入后臺(tái)時(shí),應(yīng)該保持應(yīng)用程序數(shù)據(jù),以便回到前臺(tái)時(shí)能夠恢復(fù)。當(dāng)進(jìn)入 inactive 狀態(tài)時(shí),應(yīng)該暫停當(dāng)前的業(yè)務(wù)流。iOS運(yùn)行App在后臺(tái)運(yùn)行的時(shí)間有限,因此后臺(tái)代碼不應(yīng)該執(zhí)行非常耗時(shí)的任務(wù),可能的話就使用多線程。當(dāng)進(jìn)入后臺(tái) 時(shí),iOS會(huì)保存當(dāng)前App的一個(gè)快照,以便之后在合適的時(shí)候(裝載view和數(shù)據(jù)時(shí))呈現(xiàn)給用戶以提高用戶體驗(yàn),因此在進(jìn)入后臺(tái)時(shí),應(yīng)該避免在屏幕上呈 現(xiàn)用戶信息,以免泄露用戶個(gè)人資料。
  • d) 不要更新UI或者執(zhí)行大量消耗CPU或電池的代碼。進(jìn)入后臺(tái)之后,不應(yīng)該執(zhí)行不必要的任務(wù),不要執(zhí)行 OpenGL ES 調(diào)用,應(yīng)取消 Bonjour 相關(guān)的服務(wù),正確處理網(wǎng)絡(luò)鏈接失敗,避免更新 UI,清除所有的警告或其他彈出對(duì)話框。
  • e) 保證后臺(tái)代碼的執(zhí)行工作正常,注意處理異常。
  • f) 在后臺(tái)時(shí)正確響應(yīng)系統(tǒng)變化。 如: 設(shè)備旋轉(zhuǎn)消息UIDeviceOrientationDidChangeNotification ,重要的時(shí)間變化(新的一天開(kāi)始或時(shí)區(qū)變化)UIApplicationSignificantTimeChangeNotification ,電池變化UIDeviceBatteryLevelDidChangeNotification 和 UIDeviceBatteryStateDidChangeNotification,用戶默認(rèn)設(shè)置變化 NSUserDefaultsDidChangeNotification,本地化語(yǔ)言變化 NSCurrentLocaleDidChangeNotification 等。

11,如果關(guān)鍵代碼使用 C/C++/asm 效率更高就使用 C/C++/asm。

12,如果一個(gè)方法在一個(gè)循環(huán)次數(shù)非常多的循環(huán)中使用,在進(jìn)入循環(huán)前使用 methodForSelector 獲取該方法 IMP,然后在循環(huán)體中直接使用該 IMP。

13,關(guān)于內(nèi)存釋放

在 didReceiveMemoryWarning 中釋放內(nèi)存,比如cache 的圖像,view 等,并記得調(diào)用 [supper didReceiveMemoryWarning]。清理函數(shù) didReceiveMemoryWarning, viewDidUnload 和 dealloc 都是在方法結(jié)尾處調(diào)用 supper 的方法。

14,提高 APP 加載速度

避免使用靜態(tài)初始化,包括靜態(tài)c++對(duì)象,加載時(shí)會(huì)運(yùn)行的代碼,如+(void) load{} ,會(huì)造成在Main函數(shù)之前運(yùn)行額外的代碼。

16,利用 cache 空間換時(shí)間。cache 是一種常見(jiàn)的空間換時(shí)間的提供性能的收到,可以用在相當(dāng)多的場(chǎng)合。

盡量 cache 那些可重復(fù)利用的對(duì)象,比如 table cell,date/number formatters,正則表達(dá)式,sqlite語(yǔ)句等。

17,關(guān)于數(shù)據(jù)庫(kù)

緩存經(jīng)常用到的 sqlite 語(yǔ)句;優(yōu)化數(shù)據(jù)庫(kù)查詢語(yǔ)句,用sqlite3_trace和sqlite3_profile來(lái)查找性能差的語(yǔ)句;如果可能的話,緩存查詢結(jié)果緩。

在使用 sqlite_prepare會(huì)將SQL查詢編譯成字節(jié)碼,要使用bind,重用那些已經(jīng)prepared的語(yǔ)句。

責(zé)任編輯:張葉青 來(lái)源: 博客
相關(guān)推薦

2024-12-09 09:50:00

JVM逃逸逃逸分析

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2010-08-27 09:44:07

無(wú)線網(wǎng)絡(luò)性能

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2012-05-21 10:06:26

FrameworkCocoa

2021-07-20 15:20:02

FlatBuffers阿里云Java

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2009-11-30 16:46:29

學(xué)習(xí)Linux

2022-11-09 08:06:15

GreatSQLMGR模式

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計(jì)算云系統(tǒng)

2009-11-18 13:30:37

Oracle Sequ

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2012-02-21 13:55:45

JavaScript

2022-12-02 09:13:28

SeataAT模式

2019-12-04 10:13:58

Kubernetes存儲(chǔ)Docker

2022-01-11 07:52:22

CSS 技巧代碼重構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产不卡视频一区二区三区| 天天射天天综合网| 色诱视频网站一区| 色狠狠久久av五月综合| www.97av| 亚洲一区自拍| 日韩少妇与小伙激情| 丰满人妻一区二区三区53视频| www欧美xxxx| 国产视频不卡一区| 97超级碰碰| 性色av一区二区三区四区| 亚洲精品一二三区区别| 国产婷婷成人久久av免费高清| 午夜免费看毛片| 国产拍在线视频| 亚洲欧洲三级电影| 精品一区二区国产| 国产喷水福利在线视频| 石原莉奈在线亚洲二区| 欧美高清在线观看| 国精产品久拍自产在线网站| 狼人天天伊人久久| 日韩一区二区三区免费看| 成人一区二区三| 国产嫩草在线视频| 一色屋精品亚洲香蕉网站| 久久精品人人做人人爽电影| 国产www视频| 日本亚洲欧美天堂免费| 午夜精品一区二区三区在线| 99热这里只有精品4| 香蕉久久精品日日躁夜夜躁| 欧美成人国产一区二区| 中文字幕 日韩 欧美| 暖暖成人免费视频| 婷婷久久综合九色综合绿巨人 | 大型av综合网站| 欧美日韩国产一二三| 欧美视频第一区| 国产三级电影在线播放| 亚洲国产综合人成综合网站| 国产经典久久久| 日本电影全部在线观看网站视频| 国产亚洲精品超碰| 久久久久久久久久久久久久久久av | 欧美日韩一区二区在线观看视频 | 99热精品免费| 91av精品| 不卡伊人av在线播放| 自拍偷拍第9页| 日韩电影免费网址| 在线视频欧美日韩精品| 欧美成人另类视频| 精品久久网站| 亚洲无线码在线一区观看| 青青草视频成人| 亚洲另类av| 亚洲日韩第一页| 一区二区三区伦理片| 精品国产123区| 亚洲香蕉在线观看| 日本午夜精品视频| 91中文字幕精品永久在线| 日韩专区在线观看| av激情在线观看| 午夜日本精品| 国产69精品久久久久9| 国产精品9191| 亚洲一区二区成人| 国产999精品久久久影片官网| 欧美激情黑白配| 日韩国产欧美在线视频| 国产欧美精品日韩精品| 国产乱码久久久| 国产成人午夜片在线观看高清观看| 91视频免费在线| 成人免费观看在线视频| 99久久久国产精品| 日韩一区不卡| 成人在线app| 亚洲午夜激情网页| 成人三级视频在线播放| 日本一区二区三区中文字幕| 日韩视频在线永久播放| 漂亮人妻被黑人久久精品| 一区二区小说| 日韩一区二区欧美| 国产精品日日夜夜| 日韩国产欧美一区二区三区| 92福利视频午夜1000合集在线观看| www日本高清| 久久久99久久精品欧美| 在线播放 亚洲| 高潮在线视频| 欧美日本在线一区| 国产女主播在线播放| 亚洲欧美校园春色| 欧美精品制服第一页| 精品欧美一区二区三区免费观看| 看片的网站亚洲| 国产一区在线免费| 麻豆免费在线视频| 丁香五六月婷婷久久激情| 色一情一区二区三区| 成人av动漫| 一区二区在线免费视频| 日韩黄色三级视频| 狠狠色狠狠色综合| 欧美久久久久久久| av黄在线观看| 欧美色中文字幕| 制服丝袜在线第一页| 欧美一区二区麻豆红桃视频| 高清欧美性猛交| 91禁在线观看| 久久久精品国产免大香伊| 精品一二三四五区| 久久精品国产福利| 精品视频偷偷看在线观看 | 性做久久久久久免费观看| 国产一区二区在线免费播放| 色狼人综合干| 久久久久久91| 99在线无码精品入口| 国产精品午夜在线| 国产a级一级片| 国产精东传媒成人av电影| 久久精品视频在线播放| 波多野结衣理论片| 91免费在线看| 尤物av无码色av无码| 日本一区二区三区电影免费观看| 最近日韩中文字幕中文| 国产一区免费看| 91影院在线观看| 草草视频在线免费观看| 午夜电影一区| 欧美老少配视频| 国产成人精品a视频| 国产精品福利电影一区二区三区四区| 可以免费在线看黄的网站| 日韩av中文字幕一区| 孩xxxx性bbbb欧美| 粉嫩小泬无遮挡久久久久久| 一二三区精品福利视频| 熟女人妻一区二区三区免费看| 久久精品欧美一区| 91精品中文在线| 国产在线观看av| 欧美一二三四在线| 欧美国产精品一二三| 国产成人精品亚洲777人妖| 亚洲五码在线观看视频| 免费观看亚洲天堂| 欧美国产精品日韩| 日韩在线一区二区三区四区| 亚洲成a人在线观看| 欧美大喷水吹潮合集在线观看| 亚洲精品乱码| 欧美一区二区影视| 国产精品天堂蜜av在线播放| 中文字幕日韩专区| 一本到在线视频| 亚洲美女视频在线| 日本国产在线视频| 欧美一级一区| 亚洲精品一区二区三区樱花| 国产精品毛片无码| 欧美极品美女电影一区| 深爱五月激情五月| 色国产精品一区在线观看| 欧洲性xxxx| 国产美女娇喘av呻吟久久| av网站大全免费| 蜜桃成人av| 亚洲自拍小视频免费观看| 国产又色又爽又黄刺激在线视频| 亚洲精品久久久久久下一站| 国产精华7777777| 亚洲天堂免费在线观看视频| 无套内谢丰满少妇中文字幕| 影音先锋久久| 日韩一区国产在线观看| 激情不卡一区二区三区视频在线| 欧美激情精品久久久久久蜜臀| 涩爱av在线播放一区二区| 欧美午夜在线观看| 久久精品免费av| 国产欧美久久久精品影院| 日韩久久久久久久久久久| 国产精品久久久久毛片大屁完整版| 亚洲电影免费| 精品福利一区| 成人国产精品av| 麻豆视频在线观看免费网站黄| 中文字幕亚洲字幕| 欧美熟妇另类久久久久久不卡| 欧美综合视频在线观看| 国产精品日日夜夜| 中文字幕一区二区视频| 亚洲一区二区乱码| 国产一区不卡视频| 国产美女三级视频| 一区在线免费观看| 一区二区三区我不卡| 日韩a级大片| 91嫩草视频在线观看| jizzyou欧美16| 97av在线影院| 欧美人与牲禽动交com| 中文字幕九色91在线| 天堂√在线中文官网在线| 91精品国产综合久久精品| 日韩国产亚洲欧美| 欧美日韩亚洲激情| 久久久无码精品亚洲国产| 中日韩av电影| 欧美午夜激情影院| 久久综合九色综合欧美就去吻| 被黑人猛躁10次高潮视频| 蜜桃av一区二区| 嫩草av久久伊人妇女超级a| 9久re热视频在线精品| 国产a级黄色大片| 午夜影院欧美| 在线视频91| 日韩av二区| 日本一区二区精品| 偷拍精品福利视频导航| 国产亚洲一区在线播放| 亚洲超碰在线观看| 成人亚洲综合色就1024| 只有精品亚洲| 91久久久在线| 色综合视频一区二区三区44| 国产精品自拍偷拍视频| 国产成人精品一区二三区在线观看 | 亚洲美女激情视频| 天天综合网在线观看| 精品国产一区二区三区不卡| wwwxxxx国产| 精品国产免费人成电影在线观看四季 | 国产精品最新自拍| 欧美成人三级在线视频| 亚洲经典自拍| www.爱色av.com| 一区二区三区四区五区在线| 黄色免费视频大全| 久久狠狠婷婷| 四季av一区二区| 蜜桃视频一区二区三区在线观看| 香港日本韩国三级网站| 精品一区二区三区免费播放| 天天看片天天操| 国产精品亚洲视频| 亚洲精品乱码久久久久久蜜桃欧美| 成人免费毛片aaaaa**| 妖精视频一区二区| 97se亚洲国产综合自在线不卡 | 国产小视频一区| 亚洲黄色成人网| 免费黄色片在线观看| 在线观看国产精品淫| 免费av在线网站| 色在人av网站天堂精品| 国产99在线观看| 日本成人免费在线| 高清久久一区| 国产视频99| 精品国产99| 国产黄色激情视频| 性感少妇一区| 日韩精品视频一二三| 国产精品69久久久久水密桃| 800av在线播放| 国产日韩欧美a| 丰满少妇被猛烈进入一区二区| 亚洲影视在线播放| 国产亚洲欧美日韩高清| 欧美一区二区视频观看视频| 日韩在线观看视频一区| 最近2019中文字幕在线高清| 婷婷av在线| 奇米成人av国产一区二区三区| 久久69成人| 国产一区二区三区无遮挡| 精品一区av| 加勒比成人在线| 欧美aaa在线| 亚洲天堂美女视频| 综合久久综合久久| 亚洲GV成人无码久久精品| 欧美人动与zoxxxx乱| 色呦呦中文字幕| 久久精品电影网| 在线精品亚洲欧美日韩国产| 亚洲一区二区三区sesese| 神马久久影院| 日韩精品手机在线观看| 日韩不卡免费视频| 亚洲色偷偷色噜噜狠狠99网| 中文字幕在线观看不卡| 在线天堂中文字幕| 日韩欧美精品三级| 91露出在线| 欧洲亚洲免费视频| 国产精品对白久久久久粗| 在线观看日本一区| 美女国产一区| 欧美xxxxx精品| 亚洲自拍偷拍网站| 国产精品亚洲lv粉色| 亚洲天堂av在线播放| 高清精品在线| 国产精品亚洲不卡a| 中文字幕一区二区精品区| 手机看片福利日韩| 91蜜桃在线观看| 国语对白一区二区| 欧美一区二区成人6969| 免费a在线看| 国产狼人综合免费视频| 国产欧美一区二区精品久久久| av7777777| 白白色 亚洲乱淫| 久久久精品人妻一区二区三区四 | 色哟哟中文字幕| 欧美激情免费观看| 18国产精品| 99er在线视频| 国产成人免费视频一区| 男的操女的网站| 欧美一区二区三区四区久久| 午夜在线视频播放| 国产精品三级网站| 国产最新精品| 精品亚洲一区二区三区四区| 国产女人18毛片水真多成人如厕| 99精品人妻国产毛片| 日韩精品视频三区| 色吧亚洲日本| 热re99久久精品国产99热| 玖玖国产精品视频| 亚洲第一综合网| 欧美日韩综合在线免费观看| yw视频在线观看| 国产日韩欧美视频在线| 97偷自拍亚洲综合二区| 男人的天堂最新网址| 亚洲欧洲国产日韩| 国产av无码专区亚洲av麻豆| 欧美黑人xxx| 黄色成人美女网站| 日韩视频第二页| 国产亚洲自拍一区| 亚洲一区二区人妻| 不卡av电影在线观看| 成人爽a毛片| 国模无码视频一区二区三区| 久久欧美中文字幕| 中文字幕手机在线视频| 久久精品国产久精国产一老狼| 经典三级久久| 日韩国产一级片| 国产亚洲欧美一区在线观看| 亚洲av无码乱码国产精品fc2| 色婷婷综合久久久久| 日本免费精品| 又粗又黑又大的吊av| 中文字幕av一区 二区| 99热这里只有精品在线观看| 高清欧美性猛交xxxx黑人猛交| 你懂的一区二区三区| 亚洲第一中文av| 亚洲精品免费播放| 亚洲av毛片成人精品| 国产成人亚洲综合91| 88国产精品视频一区二区三区| 中国xxxx性xxxx产国| 在线视频综合导航| 三级资源在线| 欧美精品亚洲精品| 国产中文字幕精品| 国产区一区二区三| 久久综合88中文色鬼| 台湾佬综合网| 在线a免费观看| 色婷婷综合久久久中文字幕| 中文字幕在线播放网址| 久久综合久久久| 国产美女视频91| 91精品国产高清一区二区三密臀| 久久视频在线播放| 亚洲丝袜啪啪| 先锋资源在线视频| 欧美三级视频在线| 美女高潮在线观看| 天天爱天天做天天操| 久久综合九色综合欧美98|