SDK即第三方组件,可以使用经过授权的SDK进行程序开发,常见的有验证码、第三方分享、支付功能、通讯功能,或者第三方地图SDK等
为系统的内置框架,这里说一下iOS程序的4大层,设备层为设备与函数之间的交互,这方面由苹果封装,不需要开发人员处理;数据层,进行相关数据的处理;应用层,核心代码的实现;视图层,展示在屏幕上的层。(个人理解)
在进行比较庞大的数据处理的时候,一般采用数据库SQLite的形式,数据库提供增删改查的功能,可以很方便的就进行数据的定位,缺点是编写麻烦。
CoreData本质上也是SQLite,只不过是经过了苹果的封装,在开发中无需进行SQL的任何操作,便可以进行数据库的创建和增删改查
关于SQL的操作指令在个人博客上有记录
AFNetWork是封装了NSURLSession的一个第三方类库,它方便了开发过程中对于网络请求的编写
SDWebImage是关于图片缓存机制的第三方类库,它在库里面封装了许多相关线程的函数,缓存原理简单的说就是先从本地缓存区查看是否存在,不存在则进行异步请求,请求完毕后返回主线程更新UI,同时将缓存图片存入缓存区
FMDB是封装了OC在进行数据库SQL操作的类库,由于在OC中进行数据库的编写是通过C语言的,编写起来比较不便,FMDB的出现大大优化了在进行数据库编写的代码量
关于gitHub其实就是为了团队协同开发,或者分享自己的代码给更多的程序员。
要使用gitHub需要先创建本地远程仓库(通过终端命令行的方式),然后将工程通过该远程仓库提交到缓冲区、编写更新日志、提交即可。在获取工程的时候同样需要在远程仓库进行操作,从缓冲区获取。详细的在我的个人博客有记录
关于在什么情况下使用哪种多线程方式
首先NSThread,它是经过苹果封装的,完全面向对象的,可以直接操控线程对象,使用很方便,但是它的生命周期需要程序员手动管理,所以比较少用。
GCD,也称闭包。使用的是C语言,操作简单,组合性强,十分的灵活,并且不需要手动管理生命周期,所以使用的比较多。也可以称为block,但是也有缺点,因为其是C编写的,有些时候不如用NSOperation编写好,因为NSOperation已经面向对象化,支持很多在OC中的功能,比如KVO,可以轻松的设置依赖关系
在使用GCD的时候尤其需要注意block的内存管理,防止循环引用
NSOperation,是苹果封装GCD的成果,将其面向对象化,本质上还是基于GCD的,像刚刚说的,因为其已经面向对象化,所以支持很多在OC开发中的功能,在程序中使用能使程序的结构性更好,因为他具有面向对象的特点(封装继承多态)
使用NSOperation的方式有两种:
NSInvocationOperation 和NSBlockOperation;
两者没有本质区别,但如果是使用block形式进行代码组织,使用相对方便些
要在app中添加地图功能,有两种方式:1.基于原生框架;2.导入第三方SDK。在开发中根据需求来确定使用哪一种。如果需求不高,只是实现基本的地图功能,建议使用原生的,优点是开发灵活,不占内存;如果app中地图功能比较主要,还是使用第三方组件SDK,第三方的优点是功能强大,使用便利,缺点是通过导包的方式会导致程序文件过大。
添加拍照功能有两种方式,一种是使用系统自带相机,这种方式使用方便,但是不灵活,如果想要定制相机的话需要在框架下的AVCaptureSession,就可以构造符合需求的相机了。
网络协议,就是两台设备之间要进行通讯必须遵循的规则。
TCP/IP协议分为四个层次,一般我们并不需要了解所有层次的协议,只需要理解其中应用层和传输层的协议就行。就好比送快递,我们要关心的是用什么样式去包装它,这属于应用层,然后选择哪一家的快递,这属于传输层,而至于快递从哪条线路,什么方式送达,这里是网络层和接口层,这些问题不需要我们关心。
在TCP中,什么是socket?
socket又叫套接字,其实就是作为两台设备之间的连接端点,他可以将两台设备的传输连接起来
什么是HTTP?
http又叫超文本协议,属于应用层协议,在开发中比较常见的就是关于URL的。就像很常见的url前缀大都会有个http:
http常见的传输方式有get 和post,两者之间的主要区别在于数据传递上面。
get可以直接请求一个url,并且通过在url后面连接相关参数的方式请求更多的url,但是这种做法有一定的限制,服务器中对于url的长度是有限制的,那么get中url的后缀拼接总会有个限制,一般不超过1KB。这时候如果使用post,post可以将发给服务器的参数全部放在请求体中,理论上请求体是没有限制的(具体得看服务器的处理能力)。
在选择上,如果要传递大量数据,比如文件的上传,只能用post;同时get的安全性比post要差,在安全性能上考虑的话最好还是用post,但如果仅仅是获取数据,建议使用get,因为速度快,如果是进行增删改查,使用post
在OC中发送http请求有两种方式,原生NSURLSession或者第三方框架AFNetWork,同时需要注意的是,9.0之后的iOS已经不支持HTTP,改用更加安全的HTTPS,如果需要在app中进行HTTP请求,需要在info.plist中进行网络适配
在OC中一般通过两种方式解析XML格式数据:DOM和SAX
DOM解析的特点是讲整个XML数据艺术型结构存入内存中,这样的优点是可以直接定位指定数据,读取快速,缺点是占内存,而且不能读取大型数据
SAX解析的特点是逐行解析,不占内存,可以解析大型数据,缺点是解析速度慢,效率低,不能解析指定位置数据
ARC是iOS5推出的新功能,简单说就是在代码中自动添加了release,不再需要手动的添加释放方法,简化了开发中的代码量,但是ARC并不是全能的,在开发中还是需要注意内存引用的问题
MVC其实并不是什么新技术,说白了就是一种编程经验,通过将代码分类为 模型、视图、控制器,可以提升对程序的可维护性、可移植性和可复用性。
再详细的来说就是将代码分成数据层、视图层、控制中心,由控制中心作为数据层和视图层的连接枢纽,相关的数据处理在经过数据层处理之后,由控制器将其视图层互动,进行相应的数据变动
在block中,如果要修改局部变量,则需要加__block,这里的个人理解是将变量的指针复制了一份,仅仅是复制指针而已;而__week的使用是弱引用,在变量释放的时候,就会nil掉
static,当需要某个对象可以给整个类而非某个对象使用的时候,同时要求此成员变量隐藏在类的内部,对外不可见的时候,就是用static关键字修饰,如单例的创建
const,由他修饰的变量值不可变