1ios框架分为:cocoa Touch:UIKit、Foundation、附属框架

Media:OpenGL ES、EAGL、Quartz、Core Animation、Core Audio、                          Open Audio Library、Media Player

Core Services:Address Book、Core Foundation

Core OS:线程、文件、I/O、内存和网络

2iOS网络编程层次结构四意图:

Cocoa层(NSURL、Bonjour、game Kit、webKit)

Core Foundation层(基于C的CFNetwork、CFNetServices)

OS 层(基于C的BSD socket)

3在 ARC项目中如何正确使用MRC的第三方框架?

ASIHTTPRequest目前不支持ARC,解决方法如下:

》选择TARGETS,然后选择BuildnPhases标签

》展开Compile Sources

》在所有ASIHTTPRequest相关的文件后面Compiler Flags中加入编译选项:-fno-objc-arc

4SDWebImage框架的使用

在https://github.com/rs/SDWebImage下载资源包,Download ZIP

一个UIImageView的类目,给cocoa Touch框架添加了异步下载远程图片以及管理图片缓存的功能。

AFNetworking框架的使用:https://github.com/AFNetworking/AFNetworking/

官网地址:http:afnetworking.com

使用步骤:

(1)将框架程序拖拽进项目

(2)添加iOS框架引用

-SystemConfiguration.framework

-MobileCoreSwevices.framework

(3)修改xxx-prefix.pch文件

#import< MobileCoreSwevices / MobileCoreSwevices.h>

#import< SystemConfiguration / SystemConfiguration.h>

MBProgressHUD框架的使用:https://github.com/jdg/MBProgressHUD

FMDB框架下载:https://github.com/ccgus/fmdb

ASI框架的使用:http://github.com/pokeb/asi-http-request/tarball/master

5不使用第三方框架如何实现文件上传?

使用NSURLConnection发送HTTP请求即可

6不使用第三方框架如何实现断点续传?

需要自定义URLRequest的头部的range属性

7为什么选择第三方框架?第三方框架把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理,从而可以高效的与服务端API进行数据交换;提高开发效率和稳定性

8选择第三方框架的原则:

》是否广泛使用,有足够多的技术大牛验证过;

》尽量保证能够看懂其中的所有代码

》可以学习编写其中部分方法,但不要去直接修改

9常用的iOS网络开发框架:AFN和ASI(非ARC),附属框架SSZipArchiver(下载地址:https://github.com/samsoffes/ssziparchive

AFN VS ASI

AFN:使用方法为一系列相关的请求定义一个HTTPClient,共用一个BaseURL.

基于NSURL,性能和稳定性略差;

只封装了一些功能,满足基本需求,忽略扩展功能;

针对JSON、XML、Plist、Image四种数据结构封装各自处理器

ASI:使用方法每一个请求由构造方法初始化一个实例

基于CFNetwork,性能稳定性比较高;

扩展功能丰富;

没有针对数据类型特别封装,只是预留一些各种接口和工具供开发者自行扩展。

10AFN和ASI的选择

AFN适合逻辑简单的应用,适合开发资源上不丰富的团队

ASI适合已经发展一段时间的应用,或者开发资源相对丰富的团队

iOS技术面试07:第三方框架的更多相关文章

  1. iOS开发之常用第三方框架(下载地址,使用方法,总结)

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

  2. iOS开发常用的第三方框架

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  3. iOS:网络编程的第三方框架:AFNetworking、SDWebImage

    网络编程第三方框架:AFNetworking.SDWebImage 介绍:这些框架是开源的,经过前人的封装.改进,成为使用次数很多的一个性能好的源代码框架,只需要将它导入项目中,就可以使用.因此,在做 ...

  4. iOS技术面试08:其他

    1 客户端安全性处理方式? 1> 网络数据传输(敏感数据[账号\密码\消费数据\银行卡账号], 不能明文发送) 2> 协议的问题(自定义协议, 游戏代练) 3> 本地文件存储(游戏的 ...

  5. iOS技术面试01:多线程与网络

    1. 多线程的底层实现? 1> 首先搞清楚什么是线程.什么是多线程.多线程的使用场合(线程有时被称为轻量级进程,是程序执行流的最小单元.多线程是指软件或者硬件实现多个线程并发执行的技术.多线程的 ...

  6. IOS一些高效的第三方框架库

    MBProgressHUD ——进展指示符库 苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore.而 MBProgres ...

  7. 提高iOS开发效率的第三方框架等--不断更新中。。。

    1. Mantle Mantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 model 层.简单点说,程序中经常要进行网络请求,请求到得一般是 json 字符串,我们一般会建一个 ...

  8. IOS 极光推送(第三方框架)

    下载极光推送文件,将以下两个文件导入项目中 APService.h libpushSDK.a #import "HMAppDelegate.h" #import "APS ...

  9. iOS技术面试06:应用程序

    1.NSRunLoop的实现机制,及在多线程中如何使用 NSRunLoop是IOS消息机制的处理模式 >1.NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的 ...

随机推荐

  1. mysql对子查询的优化改写

    重庆SEO:<高性能mysql第三版>提到mysql会将in子查询改写成exists查询(书中基于的mysql版本是5.1.50和5.5) 但是在5.6之后,已经优化成使用半连接查询 SE ...

  2. How To Add User To Sudoers On Debian 10 Buster

    In today’s tutorial, we are going to see how you can add a user to sudoers on Debian distributions. ...

  3. antd 表格隔行变色

    rowClassName={(record, index) => { let className = 'light-row'; if (index % 2 === 1) className = ...

  4. [USACO08FEB]酒店Hotel 线段树

    [USACO08FEB]酒店Hotel 线段树 题面 其实就是区间多维护一个lmax,rmax(表示从左开始有连续lmax个空房,一直有连续rmax个空房到最右边),合并时讨论一下即可. void p ...

  5. epoll事件模型

    事件模型 EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据. Level Triggered (LT) 水平触发只要有数据都会触 ...

  6. try except else finally

    try..except..else没有捕获到异常,执行else语句 try..except..finally不管是否捕获到异常,都执行finally语句

  7. Visual Studio2019安装步骤

    学校使用的版本是2012版本,而现在讲的版本是2019版本,差别不大,个人认为2019更能胜任学习任务. 另外VS2019是完全免费的,版本越高越好了!毕竟C++都出了C++20对吧. Step 1: ...

  8. (转)kafka 详解

    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的 ...

  9. Tomcat的默认端口问题

    0x00 起因 今天看到一个226团队,进群的时候有一个问题问的就是:Tomcat的默认端口是多少? 当时我只想到了8080,等过了不久,有位管理员回复了我是三个默认端口....,马上去翻了下资料,才 ...

  10. SDK评测

    这个作业属于哪个课程 这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2019FZUSEZ/homework/10081 这个作业的目标 每个人发表一篇随笔, ...