萬盛學電腦網

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

增強iOS應用程序性能的技巧

本文導航

1、首頁2、iOS應用程序性能-2

在開發iOS應用程序時,讓程序具有良好的性能是非常關鍵的。本文就25個增強iOS應用程序性能的提示和技巧進行了整理。

在開發過程中,下面這些初級技巧需要時刻注意:

1.使用ARC進行內存管理

2.在適當的情況下使用reuseIdentifier

3.盡可能將View設置為不透明(Opaque)

4.避免臃腫的XIBs

5.不要阻塞主線程

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

7.選擇正確的集合

8.使用GZIP壓縮

1) 使用ARC進行內存管理

ARC是在iOS 5中發布的,它解決了最常見的內存洩露問題——也是開發者最容易健忘的。ARC的全稱是“Automatic Reference Counting”——自動引用計數,它會自動的在代碼中做retain/release工作,開發者不用再手動處理。

下面是創建一個View通用的一些代碼塊:

UIView *view = [[UIView alloc] init];

// ...

[self.view addSubview:view];

[view release];

在上面代碼結束的地方很容易會忘記調用release。不過當使用ARC時,ARC會在後台自動的幫你調用release。

ARC除了能避免內存洩露外,還有助於程序性能的提升:當程序中的對象不再需要的時候,ARC會自動銷毀對象。所以,你應該在工程中使用ARC。

下面是學習ARC的一些資源:

蘋果的官方文檔

Matthijs Hollemans的初級ARC

Tony Dahbura的如何在Cocos2D 2.X工程中使用ARC

如果你仍然不確定ARC帶來的好處,那麼看一些這篇文章:8個關於ARC的神話——這能夠讓你相信你應該在工程中使用ARC!

值得注意的是,ARC並不能避免所有的內存洩露。使用ARC之後,工程中可能還會有內存洩露,不過引起這些內存洩露的主要原因是:block,retain循環,對CoreFoundation對象(通常是C結構)管理不善,以及真的是代碼沒寫好。

這裡有一篇文章是介紹哪些問題是ARC不能解決的 — 以及如何處理這些問題。

2) 在適當的情況下使用reuseIdentifier

iOS應用程序性能

在適當的情況使用reuseIdentifier

在iOS程序開發中一個普遍性的錯誤就是沒有正確的為UITableViewCells、UICollectionViewCells和UITableViewHeaderFooterViews設置reuseIdentifier。

為了獲得最佳性能,當在tableView:cellForRowAtIndexPath:方法中返回cell時,table view的數據源一般會重用UITableViewCell對象。table view維護著UITableViewCell對象的一個隊列或者列表,這些數據源已經被標記為重用了。

如果沒有使用reuseIdentifier會發生什麼?如果你在程序中沒有使用reuseIdentifier,table view每次顯示一個row時,都會配置一個全新的cell。這其實是一個非常消耗資源的操作,並且會影響程序中table view滾動的效率。

自iOS 6以來,你可能還希望header和footer views,以及UICollectionView的cell和supplementary views。

為了使用reuseIdentifiers,在table view請求一個新的cell時,在數據源中調用下面的方法:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

如果table view維護的UITableViewCell隊列或列表中有可用的cell,則從隊列從移除一個已經存在的cell,如果沒有的話,就從之前注冊的 nib文件或類中創建一個新的cell。如果沒有可以重用的cell,並且沒有注冊nib文件或類,tableview的 dequeueReusableCellWithIdentifier:方法會返回一個nil。

3) 盡可能將View設置為不透明(Opaque)

iOS應用程序性能

盡量將view設置為Opaque

如果view是不透明的,那麼應該將其opaque屬性設置為YES。為什麼要這樣做呢?這樣設置可以讓系統以最優的方式來繪制view。opaque屬性可以在Interface Builder或代碼中設置。

copyright © 萬盛學電腦網 all rights reserved