面试的好处如同考试,获得肯定或者知道不足。对于ios,object编程的一些面试题做一些整理,如下:
1、notification是多线程的吗?
通知是监听者模式在iOS编程里的应用,iOS 的通知机制,包括通知发布,通知监听,通知移除。通知的发布看书简单的接口调用,其实是cocoa为用户做了监听者模式的封装,我们运行时没有发现其阻塞我们的操作,发布通知时后台另启线程,接收时回调到主线程进行处理。
2、在项目什么时候选择使用GCD,什么时候选择NSOperation?
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化NSThreadOperation的设计思路,是具有面向对象的优点(复用、封装),使得实现是多线程支持,而接口简单,建议在复杂项目中使用。
项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作,会节省代码量,而Block参数的使用,会使代码更为易读,建议在简单项目中使用。
//创建一个队列
dispatch_queue_t queue = dispatch_queue_create("test", NULL)
//创建异步线程
dispatch_async(queue,^{
//多线程
//回到主线程执行
dispatch_sync(dispatch_get_main_queue(),^{
//回到主线程
});
});
3、ARC环境下重写set方法
- weak