猫猫分享,必须精品
原创文章,欢迎转载。转载请注明:翟乃玉的博客
地址: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;
}
简介:
1:SDWebImage是:iOS中著名的牛逼的网络图片处理框架。
2:包含的功能:图片下载、图片缓存、下载进度监听、gif处理等等。
3:用法极其简单,功能十分强大,大大提高了网络图片的处理效率。
4:国内超过90%的iOS项目都有它的影子。
第一步,下载SDWebImage,导入工程。github托管地址https://github.com/rs/SDWebImage
第二步,在需要的地方导入头文件
#import "UIImageView+WebCache.h"
第三步,调用sd_setImageWithURL:等等方法旧的版本里面都没有sd开头。
//设置下载图片的链接和站位图片
- (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个功能
//失败后重试
SDWebImageRetryFailed = 1 << 0,
//UI交互期间开始下载,导致延迟下载比如UIScrollView减速。
SDWebImageLowPriority = 1 << 1,
//只进行内存缓存
SDWebImageCacheMemoryOnly = 1 << 2,
//这个标志可以渐进式下载,显示的图像是逐步在下载
SDWebImageProgressiveDownload = 1 << 3,
//刷新缓存
SDWebImageRefreshCached = 1 << 4,
//后台下载
SDWebImageContinueInBackground = 1 << 5,
//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
SDWebImageHandleCookies = 1 << 6,
//允许使用无效的SSL证书
//SDWebImageAllowInvalidSSLCertificates = 1 << 7,
//优先下载
SDWebImageHighPriority = 1 << 8,
//延迟占位符
SDWebImageDelayPlaceholder = 1 << 9,
//改变动画形象
SDWebImageTransformAnimatedImage = 1 << 10,
//设置下载图片的链接和站位图片以及完成后执行是么操作 (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;
/**
* 当app接收到内存警告
*/
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
SDWebImageManager *mgr = [SDWebImageManager sharedManager];
// 1.取消正在下载的操作
[mgr cancelAll];
// 2.清除内存缓存
[mgr.imageCache clearMemory];
}
1.用第三方框架的目的
a: 开发效率:快速开发,人家封装好的一行代码顶自己写的N行
b: 为了使用这个功能最牛逼的实现
2.第三方框架过多,很多坏处(忽略不计)
a: 管理、升级、更新
b: 第三方框架有BUG,等待作者解决
c: 第三方框架的作者不幸去世、停止更新(潜在的BUG无人解决)
d: 感觉:自己好水
比如在流媒体:播放在线视频、音频(边下载边播放)等需求上。
如果自己做需要我们非常了解音频、视频文件的格式。并且每一种视频都有自己的解码方式(C\C++),这真的很难,没有几年的深入研究真的没啥结果
4.总结
1> 站在巨人的肩膀上编程
2> 没有关系,使劲用那么比较稳定的第三方框架
ps:(SDWebImage内部实现过程引用了6duxz博客部分素材来自传智黑马的ppt)
ps2:博客内容很多事人家的上课内容,但是每一笔每一画都是猫猫认真整理出来的,目的是为了方便自己复习,如果你也想学,很欢迎来交朋友。
猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
原文地址:http://blog.csdn.net/u013357243/article/details/46315029