猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
貓貓分享,必須精品
原創文章,歡迎轉載。轉載請注明:翟乃玉的博客
地址:http://blog.csdn.net/u013357243?viewmode=contents
效果:
代碼:
- (NSArray *)apps {if (!_apps) {NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps.plist" ofType:nil]];NSMutableArray *appArray = [NSMutableArray array];for (NSDictionary *dict in dictArray) {HMApp *app = [HMApp appWithDict:dict];[appArray addObject:app];}_apps = appArray;}return _apps; }- (void)viewDidLoad {[super viewDidLoad];}#pragma mark - 數據源方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {return self.apps.count; }- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *ID = @"app";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];if (!cell) {cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];}// 得到數據模型HMApp *app = self.apps[indexPath.row];//設置cell的標題cell.textLabel.text = app.name;//設置cell的下載次數cell.detailTextLabel.text = app.download;//站位圖片UIImage *place = [UIImage imageNamed:@"57437179_42489b0"];//用SDWebImage框架一句話解決異步下載,緩存,沙盒緩存等操作,并設置給cell的圖片[cell.imageView setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:place];return cell; }自己實現圖片異步下載沙盒緩存等操作的思路圖(面試)
SDWebImage
簡介:
1:SDWebImage是:iOS中著名的牛逼的網絡圖片處理框架。
2:包含的功能:圖片下載、圖片緩存、下載進度監聽、gif處理等等。
3:用法極其簡單,功能十分強大,大大提高了網絡圖片的處理效率。
4:國內超過90%的iOS項目都有它的影子。
使用步驟
第一步,下載SDWebImage,導入工程。github托管地址https://github.com/rs/SDWebImage
第二步,在需要的地方導入頭文件
#import "UIImageView+WebCache.h"第三步,調用sd_setImageWithURL:等等方法舊的版本里面都沒有sd開頭。
二:重點:需要記住的幾個常用方法
1 常用方法
//設置下載圖片的鏈接和站位圖片 - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder; //設置下載圖片的鏈接和站位圖片以及一個選項的集合options - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;SDWebImageOptions(上面方法中的options)
* SDWebImageRetryFailed : 下載失敗后,會自動重新下載
* SDWebImageLowPriority : 當正在進行UI交互時,自動暫停內部的一些下載操作
* SDWebImageRetryFailed | SDWebImageLowPriority : 擁有上面2個功能
//設置下載圖片的鏈接和站位圖片以及完成后執行是么操作 (completed 完成)
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;//此方法用來做下載進度條的
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;2 內存處理:當app接收到內存警告時
/**
* 當app接收到內存警告
*/
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
SDWebImageManager *mgr = [SDWebImageManager sharedManager];
}
3 SDWebImage內部實現過程
第三方框架的使用建議
1.用第三方框架的目的
a: 開發效率:快速開發,人家封裝好的一行代碼頂自己寫的N行
b: 為了使用這個功能最牛逼的實現
2.第三方框架過多,很多壞處(忽略不計)
a: 管理、升級、更新
b: 第三方框架有BUG,等待作者解決
c: 第三方框架的作者不幸去世、停止更新(潛在的BUG無人解決)
d: 感覺:自己好水
比如在流媒體:播放在線視頻、音頻(邊下載邊播放)等需求上。
如果自己做需要我們非常了解音頻、視頻文件的格式。并且每一種視頻都有自己的解碼方式(C\C++),這真的很難,沒有幾年的深入研究真的沒啥結果
4.總結
1> 站在巨人的肩膀上編程
2> 沒有關系,使勁用那么比較穩定的第三方框架
ps:(SDWebImage內部實現過程引用了6duxz博客部分素材來自傳智黑馬的ppt)
ps2:博客內容很多事人家的上課內容,但是每一筆每一畫都是貓貓認真整理出來的,目的是為了方便自己復習,如果你也想學,很歡迎來交朋友。
總結
以上是生活随笔為你收集整理的猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四月的“绝配”热点推荐 | 美通社公关传
- 下一篇: 那些看过有收获或者回味无穷的电影