1、神拷贝和浅拷贝有什么区别?
浅拷贝:指针(地址)拷贝,不会产生新对象
深拷贝:内容拷贝,会产生新对象
2、分类有什么好处? 分类和继承有什么区别?
分类可以在不修改原来类模型的基础上拓充方法
分类只能扩充方法、不能扩充成员变量;继承可以扩充方法和成员变量
继承会产生新的类
3、分类和拓展有什么区别?
分类是有名称的,类扩展没有名称
分类只能扩充方法、不能扩充成员变量;类扩展可以扩充方法和成员变量
类扩展一般就写在.m文件中,用来扩充私有的方法和成员变量(属性)
4、OC中的协议和Java中的接口有什么不同?
Java的接口中声明的方法必须都实现
Oc的protocol中声明的方法并不一定要实现
5、什么是 KVO 和 KVC?
KVC是键值编码,可以通过一个字符串的key(属性名)修改对象的属性值
KVO是键值监听,可以监听一个对象属性值的改变
6、What is purpose of delegates?
两个对象之间传递数据和消息
解耦,拆分业务逻辑
7、OC中的mutable 和immutable分别指什么?
mutable是可变类型,比如NSMutableArray,可以动态往里面添加元素
immutable是不可变类型,比如NSArray,固定的存储空间,不能添加元素
8、为什么我们把OC称为运行时语言?
动态绑定:对象类型在运行时才真正确定
多态性
9、 NSNotification 和 protocol有什么不同?
通过NSNotification可以给多个对象传递数据和消息
通过protocol(代理模式)只能给一个对象传递数据和消息
10、什么是 push notification?
本地推送:程序内部弹出通知到用户设备
远程推送:由推送服务器推送通知到用户设备