萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> 增強iOS應用程序性能的提示和技巧的初級篇

增強iOS應用程序性能的提示和技巧的初級篇

本文主要講述了25個增強iOS應用程序性能的提示和技巧的初級篇,希望對大家有所幫助。

不要阻塞主線程

永遠都不要在主線程做繁重的任務。因為UIKit的左右任務都在主線程中進行,例如繪制、觸摸管理和輸入響應。

在主線程做所有任務的風險是:如果你的代碼阻塞了主線程,那麼程序將出現反應遲鈍。這回招致用戶在App Store上對程序的差評!

在執行I/O操作中,大多數情況下都會祖塞主線程,這些操作需要從讀寫外部資源,例如磁盤或者網絡。

關於網絡操作可以使用NSURLConnection的如下方法,以異步的方式來執行:

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

或者使用第三方框架,例如AFNetworking。

如果你需要做一些其它類型開銷很大的操作(例如執行一個時間密集型的計算或者對磁盤進行讀寫),那麼就使用GCD(Grand Central Dispatch),或NSOperations 和 NSOperationQueues。

下面的代碼是使用GCD的一個模板:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// switch to a background thread and perform your expensive operation

dispatch_async(dispatch_get_main_queue(), ^{

// switch back to the main thread to update your UI

});

});

如上代碼,為什麼在第一個dispatch_async裡面還嵌套了一個dispatch_async呢?這是因為關於UIKit相關的代碼需要在主線程裡面執行。

可以看看Ray Wenderlich中的教程:iOS中多線程和GCD—初級,以及Soheil Azarpour的如何使用NSOperations和NSOperationQueues教程。

6) 讓圖片的大小跟UIImageView一樣

https://twcomputer.wsxdn.com/programming/UploadFiles_4795/201510/2015102114405595.jpg

1

 

確保圖片和UIImageView大小一致

如果需要將程序bundle中的圖片顯示到UIImageView中,請確保圖片和UIImageView的大小是一樣的。因為圖片的縮放非常耗費資源,特別是將UIImageView嵌入到UIScrollView中。

如果是從遠程服務中下載圖片,有時候你控制不了圖片的尺寸,或者在下載之前無法在服務器上進行圖片的縮放。這種情況,當圖片下載完之後,你可以手動進行圖片的縮放——做好是在後台線程中!——然後再在UIImageView中使用縮放過的圖片。

選擇正確的集合

選擇正確的集合

學習使用最適合的類或對象是編寫高效代碼的基礎。特別是在處理集合數據時,尤為重要。

蘋果的官網上有一篇文章:集合編程主題(Collections Programming Topics)——詳細的介紹了在集合數據中可以使用的類,以及什麼情況下使用哪個類。在使用集合時,每個開發者都應該閱讀一下這個文檔。

太長,不想閱讀(TLDR)?下面是常見集合類型的一個簡介:

•數組:是一個值按順序排列的一個列表。根據索引可以快速查找,不過根據值進行查找就比較慢,另外插入和刪除也比較慢。

•字典:  存儲鍵/值對。根據鍵可以快速查找。

•Sets:  是一個值無序排列的列表,根據值可以快速查找,另外插入和刪除也比較快。

8) 使用GZIP壓縮

使用GZIP壓縮

越來越多的程序依賴於外部數據,這些數據一般來自遠程服務器或者其它的外部APIs。有時候你需要開發一個程序來下載一些數據,這些數據可以是XML,JSON,HTML或者其它一些文本格式。

問題是在移動設備上的網絡是不確定的。用戶的設備可能在EDGE網絡一分鐘,然後接著又在3G網絡中。不管在什麼情況下,都不要讓用戶等待。

有一個可以優化的選擇:使用GZIP對網絡傳輸中的數據進行壓縮,這樣可以減小文件的大小,並加快下載的速度。壓縮對於文本數據特別有用,因為文本具有很高的壓縮比。

iOS中,如果使用NSURLConnection,那麼默認情況下已經支持GZIP壓縮了,並且基於NSURLConnection的框架頁支持GZIP壓縮,如AFNetworking。甚至有些雲服務提供商已經提供發送經壓縮過的響應內容,例如 Google App Engine。

以上就是小編為大家整理的25個增強iOS應用程序性能的提示和技巧的初級篇,希望對大家有所幫助。

 

copyright © 萬盛學電腦網 all rights reserved