上午参加的58同城的面试,感觉受益很多,发现自己不会的东西太多太多,总以为学习的多了就好,各种语言都学习下,可是58的面试官很真诚的为我讲解了这样做的问题,深有感触,准备静心一段时间,好好把常用的iOS一些框架底层了解一下。
面试问题:
JSON 和XML的区别?
AFN和ASI的区别?
答案:1.底层实现
1> AFN的底层基于OC的NSURLConnection和NSURLSession
2> ASI的底层基于纯C语言的CFNetwork框架
3> ASI的运行性能 高于 AFN
2.对服务器返回的数据处理
1> ASI没有直接提供对服务器数据处理的方式,直接返回data\string
2> AFN提供了多种对服务器数据处理的方式
- JSON处理
- XML处理
- 其他处理
3.监听请求的过程
1> AFN提供了success和failure两个block来监听请求的过程(只能监听成功和失败)
- success : 请求成功后调用
- failure : 请求失败后调用
2> ASI提供了3套方案,每一套方案都能监听请求的完整过程
(监听请求开始、接收到响应头信息、接受到具体数据、接受完毕、请求失败)
- 成为代理,遵守协议,实现协议中的代理方法
- 成为代理,不遵守协议,自定义代理方法
- 设置block
4.在文件下载和文件上传的使用难易度
1> AFN
- 不容易监听下载进度和上传进度
- 不容易实现断点续传
- 一般只用来下载不大的文件
2> ASI
- 非常容易实现下载和上传
- 非常容易监听下载进度和上传进度
- 非常容易实现断点续传
- 下载或大或小的文件都行
5.ASI提供了更多的实用功能
1> 控制圈圈要不要在请求过程中转
2> 可以轻松地设置请求之间的依赖:每一个请求都是一个NSOperation对象
3> 可以统一管理所有请求(还专门提供了一个叫做ASINetworkQueue来管理所有的请求对象)
- 暂停\恢复\取消所有的请求
- 监听整个队列中所有请求的下载进度和上传进度
AFN和ASI的对比的参照图
http://wenku.baidu.com/link?url=PAzbEWzLxF9U499tWk9h_9ekrAr27O3_OeyGYaBUL4K6EbHn3VMYahbEkoIwzXxC3mWfvhCROQmW8uyiXJhWAcct6Y9KATNPHACZfDPt2US
系统的UIImage imageWithName:方法和UIImage imageWithContentsOfFile:区别?
网友评论