声明
本文章仅供参考,写此博客主要是为了记录本人的iOS学习历程,如果感兴趣的话可以看下源码:
GitHub地址
介绍
- 使用了AFNetworking,以及MBProgressHUD第三方库。
- 懒加载的使用。
- 学习阶段:4.19 - 5.4。
使用
首先上主要代码,后面再对部分内容进行扩展:
|
|
运行界面:
##AFNetworking简介
想要进行iOS开发的我,不知道NSUrlRequest、不知道NSUrlConnection、也不知道NSURLSession…(说不下去了…真的什么都不知道…)但是现在只要是请求网络都会想到使用AFN。关于AFN虽然用的次数少,甚至真正的实现还是得参照着别人的代码来写咳!没毛病!
。但是还是加深了对AFN的了解,首先是它的优缺点:
优点:
123456789101. 维护和使用者比较多2. 对ARC支持3. 对Block的支持非常好4. 专门对异步请求的支持5. 支持基于URL 缓存6. 图片以及NSURLCache AFCache缓存使用7. 支持后台下载,缓存离线请求的支持(SDURLCache)8. 对JSON支持比较好9. 对实现的http请求比较容易10. 对HTTPS 的支持缺点
12* 是基于Foundation框架的NSURLConnection对网络进行的封装,不是用的底层的CFNetwork进行的封装,扩展功能可能稍微少一些。* 但是在http上的网络支持已经足够。
基本使用
设置超时
123[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];manager.requestSerializer.timeoutInterval = 15;//这个值是什么意思? 网络请求超时时间设置为5s[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];GET请求网络数据方法
123456789101112131415161718192021222324252627282930[manager GET:URLString parameters:nil progress:nilsuccess:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){if ([responseObject[@"msg"] isEqualToString:@"ok"]){//_datas=[[NSMutableArray alloc]init]; //不使用懒加载的话可以在这里或者GET之前初始化数据for(NSDictionary *eachDic in responseObject[@"links"]){NSLog(@"%@",eachDic);Vedio *vedio=[[Vedio alloc]initWithDic:eachDic];[self.datas addObject:vedio];//换成_datas会怎么样? 懒加载调用 没有初始化不会输出数据_showButton.hidden=false; //不隐藏}hud.label.text = @"加载成功!";[hud hideAnimated:YES afterDelay:0.2];}else{hud.label.text = @"加载错误!";NSLog(@"数据错误");[hud hideAnimated:YES afterDelay:0.5];}}failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){hud.label.text = @"网络超时";NSLog(@"网络超时");[hud hideAnimated:YES afterDelay:0.5];}];
##MBProgressHUD简介
MBProgressHUD是一个显示HUD窗口的第三方类库,用于在执行一些后台任务时,在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口。
基本使用
模式
|
|
- 系统自带指示器1hud.mode = MBProgressHUDModeIndeterminate;
饼图
1hud.mode = MBProgressHUDModeDeterminate;进度条
1hud.mode = MBProgressHUDModeDeterminateHorizontalBar;圆环
1hud.mode = MBProgressHUDModeAnnularDeterminate;只显示文字
12hud.mode = MBProgressHUDModeText;hud.labelText = @"MBProgressHUDModeText";
初始化及其他基本使用
初始化
12MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];hud.label.text = @"加载中...";//菊花文本隐藏
1[hud hideAnimated:YES afterDelay:0.2];//afterDelay的值为停留时间。
懒加载简介
- 懒加载可以定义为:延时加载,即当对象需要用到的时候再去加载。其实就是重写对象的get方法,当系统或者开发者调用对象的get方法时,再去加载对象。
懒加载的优点
- 不需将对象的实例化写到viewDidLoad中,可以简化代码,增强代码的可读性。
- 对系统的内存占用率会减小。
- 对象的实例化在getter方法中,各司其职,降低耦合性。
懒加载使用对比
|
|
|
|
在本文的代码中我们可以发现,如果不使用懒加载,datas
的初始化存在于- (IBAction)get:(id)sender
方法中,这是在该对象的初始化后紧接着使用。但是在大多数情况下,一个对象的使用不会局限于此,甚至于在各种地方都需要调用,那么此时如果不使用懒加载的话则会浪费很多内存资源。而懒加载则无需担心这些,我们只需要在使用的时候self.XXX
,系统会自动加载好对象。