老铁们,大家好,相信还有很多朋友对于高效iOS多图下载实战教程(第二部分)和的相关问题不太懂,没关系,今天就由我来为大家分享分享高效iOS多图下载实战教程(第二部分)以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
//重复下载图片->缓存
//内存缓存->磁盘缓存
//Documents: 手机连接itunes时会进行备份,缓存数据不允许放在该路径下。
//library: 缓存路径:保存缓存数据Preferences:保存一些账户信息
//tmp:临时路径,随时会被删除
//
//ViewController.m
//多图
//
//由Apple于2017年5月30日创建。
//版权所有 2017 苹果公司。版权所有。
//
#import"ViewController.h"
#import"App.h"
@interfaceViewController()
@property(非原子,强)NSArray*apps;
//内存缓存
@property(非原子,强)NSMutableDictionary*imageDic;
@结尾
@implementationViewController
- (NSMutableDictionary*)imageDic{
如果(_imageDic==nil){
_imageDic=[NSMutableDictionary字典];
}
返回_imageDic;
}
- (NSArray*)apps{
如果(_apps==nil){
NSArray*ary=[NSArrayarrayWithContentsOfFile:[[NSBundlemainBundle]pathForResource:@"apps"ofType:@"plist"]];
NSMutableArray*ary1=[NSMutableArrayarray];
for(NSDictionary*dictinary) {
[ary1addObject:[AppappWithdic:dic]];
}
_apps=ary1;
}
返回应用程序;
}
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{
returnself.apps.count;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{
返回1;
}
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
staticNSString* ID=@"app";
UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:ID];
应用*应用=_apps[indexPath.row];
cell.textLabel.text=应用程序名称;
cell.detailTextLabel.text=app.download;
//下载图片
//首先检查内存缓存中是否存在该图像。如果存在则直接使用,但程序重启时需要重新下载。
//如果有磁盘缓存,则将磁盘缓存放入内存缓存中,否则直接下载
//1.从未下载过
//2.下载并销毁
UIImage*imaged=[self.imageDicobjectForKey:app.icon];
如果(成像){
cell.imageView.image=成像;
NSLog(@"%ld---内存缓存",(long)indexPath.row);
}别的{
NSString*Caches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES).lastObject;
NSString*文件名=[app.iconlastPathComponent];
NSString* fullpath=[CachesstringByAppendingPathComponent:文件名];
//检查磁盘缓存:
NSData*imageD=[NSDatadataWithContentsOfFile:fullpath];
如果(图像D){
UIImage*图像=[UIImageimageWithData:imageD];
cell.imageView.image=图像;
NSLog(@"%ld---磁盘缓存",(long)indexPath.row);
//将磁盘缓存放入内存缓存
[self.imageDicsetObject:imageforKey:app.icon];
}别的{
NSURL*url=[NSURLURLWithString:app.icon];
NSData*imageData=[NSDatadataWithContentsOfURL:url];
UIImage*image=[UIImageimageWithData:imageData];
cell.imageView.image=图像;
//将图像保存到内存缓存中
[self.imageDicsetObject:imageforKey:app.icon];
[imageDatawriteToFile:fullpathatomically:YES];
NSLog(@"%ld",(long)indexPath.row);
}
}
//打印沙箱路径
//NSLog(@"%@",NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES));
返回单元;
}
//UI不流畅-》开启子线程下载
//重复下载图片->缓存
//内存缓存->磁盘缓存
//documents: 手机连接itunes时会进行备份,缓存数据不允许放在该路径下。
//library:缓存路径:保存缓存数据首选项:保存一些账户信息
//tmp:临时路径,随时会被删除
【高效iOS多图下载实战教程(第二部分)】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于等到 iOS 多图下载教程第二篇啦!
有8位网友表示赞同!
之前看了一版,不过那还是比较基础的,这回想要看进阶技巧啊!
有18位网友表示赞同!
希望能看到一些更复杂的下载方法,比如多图分类下载或者自动识别图片类型下载。
有8位网友表示赞同!
这种教程真是宝藏啊,我常常需要用到这个功能!
有18位网友表示赞同!
不知道这次能不能解决我想知道的“如何批量取消正在下载的图片”的问题呢?
有10位网友表示赞同!
期待新方法能够更高效一些,省点时间啊!
有11位网友表示赞同!
终于可以摆脱那些繁琐的浏览器操作啦!
有15位网友表示赞同!
希望教程能解释清楚每个步骤的原理,这样我理解起来会更到位。
有18位网友表示赞同!
iOS 多图下载真的太方便了,尤其是在手机上查看图片的时候。
有14位网友表示赞同!
分享一下你常用的iOS多图下载工具吧!
有15位网友表示赞同!
这个教程有没有什么特别推荐的操作步骤呢?
有18位网友表示赞同!
下载完成之后图片会存到哪里呢?可以设置自定义保存路径吗?
有6位网友表示赞同!
希望能有视频演示更直观一些,更容易上手!
有11位网友表示赞同!
不知道教程里面会不会用到第三方库或者 API?
有20位网友表示赞同!
这种技术应用范围很广啊,不仅仅局限于下载图片吧?
有20位网友表示赞同!
最近在做了一个项目需要用到类似的功能,正好顺其水来学习一下这个教程!
有11位网友表示赞同!
每次看到 iOS 多图下载的案例都觉得好酷炫!
有15位网友表示赞同!
期待以后能看到更多关于 iOS 开发的精彩教程!
有18位网友表示赞同!