自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解TableView中圖片延時加載

移動開發(fā) iOS
一次性從服務器上取來所有圖片對用戶來浪費流量,對服務器也是負擔,最好是按需加載,即當該用戶要瀏覽該條目時再去加載經(jīng)常我們會用tableView顯示很多條目。

TableView圖片延時加載是本文要介紹的內(nèi)容,經(jīng)常我們會用tableView顯示很多條目,有時候需要顯示圖片。但是一次性從服務器上取來所有圖片對用戶來浪費流量,對服務器也是負擔,最好是按需加載,即當該用戶要瀏覽該條目時再去加載經(jīng)常我們會用tableView顯示很多條目。

有時候需要顯示圖片, 但是一次從服務器上取來所有圖片對用戶來浪費流量,,對服務器也是負擔.最好是按需加載,即當該用戶要瀏覽該條目時再去加載它的圖片。

重寫如下方法

  1. - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     UIImage *image = [self getImageForCellAtIndexPath:indexPath];  //從網(wǎng)上取得圖片  
  4.     [cell.imageView setImage:image];  

這雖然解決了延時加載的問題, 但當網(wǎng)速很慢, 或者圖片很大時(假設,雖然一般cell中的圖很小),你會發(fā)現(xiàn)程序可能會失去對用戶的響應.

原因是

  1. UIImage *image = [self getImageForCellAtIndexPath:indexPath]; 

 這個方法可能要花費大量的時間,主線程要處理這個method,所以失去了對用戶的響應.

所以要將該方法提出來:

  1. - (void)updateImageForCellAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  4.     UIImage *image = [self getImageForCellAtIndexPath:indexPath];  
  5.     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];  
  6.     [cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];  
  7.     [pool release];  

然后再新開一個線程去做這件事情

  1. - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     [NSThread detachNewThreadSelector:@selector(updateImageForCellAtIndexPath:) toTarget:self withObject:indexPath];  

同理當我們需要長時間的計算時,也要新開一個線程 去做這個計算以避免程序處于假死狀態(tài)

以上代碼只是示例, 還可以改進的更多, 比如從網(wǎng)上down下來一次后就將圖片緩存起來,再次顯示的時候就不用去下載。

小結:詳解TableView圖片延時加載的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2011-08-18 17:20:21

IOS開發(fā)TableView圖片

2011-08-12 14:58:43

iPhoneTableview數(shù)據(jù)

2009-07-02 09:38:17

Hibernate延時

2022-01-04 16:50:47

JavaScript圖片網(wǎng)站

2011-07-25 15:32:06

iPhone Table 動態(tài)

2021-04-20 08:49:38

AndroidKotlinColi

2011-08-08 15:48:13

iPhone TableView 背景

2015-06-11 10:12:26

Android圖片加載緩存

2021-07-05 06:51:43

Java機制類加載器

2014-10-13 10:44:43

PCB布線

2013-06-27 11:16:27

Android異步加載

2011-07-06 16:15:46

iPhone 圖片

2011-07-22 13:30:52

JavaScript

2015-08-25 10:28:38

前端圖片延遲加載

2011-03-17 10:37:07

JavaScript

2017-11-08 14:34:20

圖片fresco程序員

2011-06-24 16:41:14

QT OpenCV 框架

2009-07-28 13:39:44

加載ViewStateASP.NET

2020-11-18 09:30:29

圖片懶加載前端瀏覽器

2012-06-05 10:22:45

jQuery
點贊
收藏

51CTO技術棧公眾號