美文网首页
iOS精选面试题③

iOS精选面试题③

作者: 莫忘小猪 | 来源:发表于2016-07-30 12:35 被阅读0次

1、自动释放池是什么,如何工作

自动释放池是NSAutorelease类的一个实例,当向一个对象发送autorelease消息时,该对象会自动入池,待池销毁时,将会向池中所有对象发送一条release消息,释放对象。

2、为什么delegate(代理)属性都是assign而不是retain

防止循环引用,以致对象无法得到正确的释放

3、iOS开发中数据持久性,有哪几种

plist文件写入、对象归档、sqlite3数据库、coredata

4、什么是KVC和KVO?以及它们之间的关系是什么?

1⃣️KVC(键值编码)是一种间接访问对象实例变量的机制,该机制可以不通过存取方法就可以访问对象的实例变量。

2⃣️KVO(键值观察)是一种能使得对象获取到其他对象属性变化的通知机制。

3⃣️实现KVO键值观察模式,被观察的对象必须使用KVC键值编码来修改它的实例变量,这样才能被观察者观察到。因此,KVC是KVO的基础或者说KVO的实现是建立在KVC的基础上的。

5、简述常见的设计模式

单例模式、代理模式、观察者模式、工厂模式、策略、MVC模式

6、内存管理在dealloc方法中,用release方法好,还是用self.xxx = nil好?

使用self.xxx = nil更好,因为先调用了release方法,而且还将变量设置为nil,这样就更安全的释放对象,防止野指针调用。

7、线程与进程的区别和联系?

一般的应用程序是单个进程,也有多进程(谷歌浏览器),进程是个静态的容器,里面容纳了很多个线程,线程是一系列方法的线性执行路径。

8、OC语言的优缺点

1⃣️优点:类目、动态识别、支持C语言、OC与C++可以混编

2⃣️缺点:不支持命名空间、不支持运算符重载、不支持多重继承

9、代理delegate与通知Notification、block的使用区别

delegate与block一般是用于两个对象一对一之间的通信交互,delegate需要定义协议方法,代理对象实现协议方法,并且需要建立代理关系才可以实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如果通信事件比较多的话,建议使用delegate。Notification主要用于一对多情况下通信,而且,通信对象之间不需要建立关系,但是使用通知,代码可读性差。

相关文章

网友评论

      本文标题:iOS精选面试题③

      本文链接:https://www.haomeiwen.com/subject/ugftsttx.html