iOS ASI 笔记
来源:互联网 发布:安卓手机版mac修改大师 编辑:程序博客网 时间:2024/06/05 07:09
//联系人:石虎 QQ: 1224614774昵称:嗡嘛呢叭咪哄
ASI -“HTTP访问终结者”2012年11月停止更新
与 AFN的对比
-AFN
1.基于 NSURLConnection & NSURLSession进行的封装
2.使用简单
3.提供了自动的序列化 &反序列化支持!
-ASI
1.基于 CFNetwork进行的封装 Core Foundation,是底层的 C语言的框架,ASI的效率是跟好的
2.使用非常灵活,给程序员提供了各种使用的可能和空间!
* 用代理
*用块代码
*自定义监听方法
*自定义代理->开发者可以定制专属自己的网络管理工具!
提示:真正开发中,只要选择一个我们比较能够掌握的就可以了!
3.使用难度大
4. MRC的,需要考虑到 ARC & MRC混编的问题
5.返回内容只是提供了二进制数据,或者字符串(前提结果确实是字符串!)
ASI的序列化和反序列化需要程序员自己来!
-其他
是否会使用 ASI,说明你是否是一个资深的 iOS 程序员
目前仍然后很多大的项目,在使用 ASI,原因:
1>大的项目开发时间比较长,不好更换
2>大的项目对网络请求的复杂度要求比较高!AFN无法胜任!
阅读官方示例程序笔记
#import "ASIHTTPRequest.h"
1. url
NSURL *url = [NSURL URLWithString:[urlField text]];
2. request
[self setRequest:[ASIHTTPRequest requestWithURL:url]];
3.发起同步请求
[request startSynchronous];
// 异步请求
[request startAsynchronous];
4.能够获得数据了!
获得一个信息:ASI中,绝大多数的功能都封装在 ASI的请求中!
ASI block使用的细节:
*** 如果同时设置了代理和块代码,两个方法都会被执行,而且先执行代理的方法,后执行block的方法!
*** 在使用 block时,如果设计到引用 request,需要注意不要出现循环引用!
__weak typeof(request) weakRequest = request;
[request setCompletionBlock:^{
NSLog(@"block - %@", weakRequest.responseString);
}];
block 是 iOS4.0之后,苹果推出的,ASI默认的设备版本是3.1.3,支持2.0。
ASI最开始是没有block的,在1.8版本之后,才增加了block的功能!
面试题:在使用block的时候,什么时候会出现循环引用,如何解决?
在使用 ASI的时候,如果没有特殊情况,使用代理会更安全!
*** ASI 使用的一个很重要的注意事项
视图控制器销毁之前,需要清理 request的代理并且取消请求,否则会造成野指针访问
// 取消下载任务
[self.request clearDelegatesAndCancel];
关于第三方框架源代码的阅读:
1. OC的代码可以使劲看
2. C语言的代码,看看头文件,知道接口,能够画出大概的功能接口线路图就行了!
- iOS ASI 笔记
- iOS笔记-(ASI缓存常用方法总结)
- iOS-ASI
- iOS 断点续传 —ASI
- iOS ASI详解
- ios ASI ASIHttpRequest
- iOS - ASI与AFN
- iOS-AFN相较ASI
- iOS中ASI
- iOS开发之ASI
- IOS ASI http 框架详解
- IOS ASI http 框架详解
- IOS ASI http 框架详解
- iOS ASI http 框架详解
- iOS ASI http 框架详解
- IOS ASI http 框架详解
- iOS ASI http 框架详解
- IOS ASI http 框架详解
- Classloader类的缓存机制
- React 组件之间如何交流
- PASCAL VOC 数据集
- netty 学习(1)
- Python快速入门(3)-逻辑控制与循环
- iOS ASI 笔记
- 爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子URL 将种子URL加入任务队列 从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网
- Android调试之tombstone信息的分析
- 【python学习笔记】6.list和tuple的操作
- Struts:文件上传下载
- 冲刺NOI2017 (22) 养猫 (线性规划方程转网络流)
- 【python数据挖掘课程】十五.Matplotlib调用imshow()函数绘制热图
- Python程序运行原理解释
- Android NDK Tombstone/Crash 分析