12、iOS中对象之间有哪些通信方式
代理delegate、block、通知、KVO
13、block在内存管理上的特点、需要注意循环引用,如何解决循环引用
(1)block块中使用了局部对象,则会将此对象retain,引用了当前对象的属性或方法,则会将当前对象retain
(2)解决循环引用:将当前对象赋值给一个局部变量,并且使用__block关键字修饰该局部变量,使用该变量访问当前对象的属性和方法。
15、OC中又线程池(线程队列)吗,NSOperationQueue是如何管理线程的。
(1)NSOperationQueue是OC中的线程池,线程池中可以存放多个线程
(2)NSOperationQueue可以管理线程的并发数,还可以管理线程之间的优先级
16、timer的间隔周期准吗?为什么?怎样实现一个精准的timer?
定时器timer一般都是准确的,但是当主线程有些时候难免会出现堵塞情况,这样就可能导致定时器time会延迟从而不准确。我们可以开一个多线程,在此多线程上运行定时器,这样多线程只运行定时器,不会因堵塞而导致误差。
18、xml数据的解析方式,各有什么不同,json解析有哪些框架
(1)xml数据解析有两种解析方式:DOM解析和SAX解析
(2)DOM解析必须先完成DOM树的构造,在处理规模较大的XML文档的时候就很耗内存,占用资源较多
(3)与DOM不同的是,它是用事件驱动模型,解析XML文档时每遇到一个开始或者结束标签、或者属性、或者是一条指令时,程序就产生一个事件来进行相应的处理,因此SAX相对于DOM来说更适合操作大的XML文档
(4)json解析现在性能比较好的主要是第三方的JSONKIT和iOS自带的json解析类,自带的json解析性能是最高的,但是只能是iOS5之后才可以用。
19、用过哪些开源网络框架,各有什么特点
(1)ASIHTTPRequest
优点:出来比较早、功能强大、文档丰富
缺点:已经停止更新、新特性少、厚重且对iOS5以上支持不够完善
(2)AFNetWorking
优点:支持比较新的特性、简单易用
缺点:文档数目一般、功能少、忽略了一些扩展功能
(3)MKNetWorkKit(建议使用)
优点:支持ARC、一个印度大卡写的。有ASIHTTPRequest功能、AFNetWorking的轻便
缺点:文档数目最少
20、iOS中有哪些数据持久化的方式,各有什么优点,iOS平台怎么做数据的持久化?CoreData和sqlite有无必然联系?
CoreData是一个关系型数据库吗
(1)主要由四种持久化方式:属性列表、对象归档、SQLite数据库、CoreData
(2)CoreData不是一个数据库,不过可以使用Sqlite数据库来保持数据,也可以使用其他的方式来存储数据,例如:xml
(3)属性列表、对象归档适合小数据量存储和查询操作
(4)Sqlite、CoreData适合大数据量存储和查询操作
47、SVN、Git协作开发,怎么防止代码文件冲突?
(1)防止代码冲突:不要多人同时修改同一个文件。例如A、B都修改同一个文件,先让A修改,然后提交到服务器,然后B更新下载下来,再进行修改
(2)服务器上的项目xcodeproj,仅让一个人管理提交,其他人只更新。防止此文件产生冲突。
49.断点续传是如何实现的 ?
将下载的文件分成几个部分,通过http协议的请求头,设置每一部分下载的偏移量,然后通过多线程下载每一部分,下载完成之后,组合为最终的完整文件。
50、解释线程同步,有几种方法
1、原子操作 --OSAtomic系列函数
2、锁--NSLock系列对象
3、事件 --NSCondtion
55、block中__block的作用
1、__block修饰的局部变量,在block块中是可以修改的
2、__block修饰的局部对象,在block块中如果饮用了此对象,此对象不会retain
57、unsafe_unretained与weak的作用与区别
unsafe_unretained与weak都是弱引用 ,功能都是一样的,不对对象做retain操作,但是weak修饰的对象,当此对象销毁后,会自动将指向这个对象的指针设置为nil