您的位置:首页 > 职场人生

常见的IOS面试题整理(附答案)待更新

2016-09-21 17:15 477 查看
常见的IOS面试题,有时间就整理一下,既可以巩固自己的基础知识,又可以为给我IOS猿媛们提供一下参考。(如有不对的地方,望请大家指出)

欢迎大家来和我一起交流技术:QQ970941938。

1. object-c有多继承吗?如果没有,用什么来替代呢?

参考答案:所有的类都基于NSObject,可以用protocol代理来实现多继承的特性。

2. 深浅拷贝类:

2.1 父类实现深拷贝时,子类如何实现深拷贝;父类没有实现深拷贝时,子类又该如何实现深拷贝?

参考答案:

深拷贝与浅拷贝的区别:浅拷贝属于指针拷贝,对一个对象进行浅拷贝,相当于对指向的对象的对象进行复制,生成一个新的指向这个对象的指针,即两个指针指向同一对象,该对象一销毁,两个指针都会变成null。深拷贝是对对象进行拷贝,即生成两个指针指向两个对象,其中一个对象被销毁,另一个对象不受影响。
深拷贝需要实现NSCoying协议,实现-(id)copyWithZone:(NSZone *)zone方法。当对一个property属性含有copy修饰符的时候,在进行赋值操作的时候实际上就是调用这个方法。
父类实现深拷贝之后,子类只要重写copyWithZone方法,在方法内部调用父类的copyWithZone方法,之后实现自己的属性的处理

父类没有实现深拷贝,子类除了需要对自己的属性进行处理,还要对父类的属性进行处理。

3. KVO,NSNotification,delegate,block的区别是什么?

参考答案:

KVO就是cocoa框架实现的观察者模式,是一对多的关系,一个值的变化会通知所有的观察者。一般同KVC搭配使用。例如:一个X轴坐标的改变,会通知所有的观察者。一般的使用场景的监测数据的变化。
NSNotification和KVO是一样的,都是状态变化之后告知对方,是一对多的关系(全局通知,弱关联)。NSNotification的特点,就是需要被观察者先主动发出通知,然后观察者注册监听后再来进行响应,比KVO多了发送通知的一步,但是其优点是监听不局限于属性的变化,还可以对多种多样的状态变化进行监听,监听范围广,使用也更灵活。
delegate 是代理,就是我不想做的事情交给别人做,是一对一的关系(强关联)。一般的使用场景是行为。
block是delegate的另一种形式,是函数式编程的一种形式。使用场景跟delegate一样,相比delegate更灵活,而且代理的实现更直观。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息