面试题9

本文深入探讨了iOS开发中的关键技术,包括对象间通信方式、内存管理、线程池、定时器、数据持久化、开源网络框架、代码冲突解决、断点续传实现等核心内容。同时介绍了iOS数据持久化方式及特性,以及如何有效利用线程同步技术。此外,文章还详细讲解了block、KVO、代理delegate等概念,提供了全面的iOS开发指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值