1 kvo 内部实现原理
a kvo 是基于runtime 机制实现的
b 当某个类的对象第一次被观察时 系统就会在运行期动态的创建该类的一个派生类 当这个派生类中重写基类中任何被观察的setterf
setter方法 实现真正的通知机制 person ---》nskvonotifying_person)
2 是否可以把比较耗时的操作放在nsnotifaction中
如果在异步线程fade通知 那么可以执行比较耗时的操作
如果在主线程发的通知 那么就不可以执行比较耗时的操作
3 FOUNDATION 对象和corefoundation 对象有什么区别
1 foundation 对象时oc 的 coreFoundation 对象是c对象
2 数据类型之间的转换
ARC arc __bridge _retain __bridge _transfer
非ARC __bridge
4 不用中间变量 用两种方法 交换A 和B 的值
A = A+B
B = A-B
A = A-B
或者
A = A^ B
B = A^B
A = A ^B
5 简单描述下对单例模式设计的理解
节省内存资源 一个应用就一个对象
6 什么是动态 举例说明
在程序运行过程中才执行的操作
7 runtime 实现的机制是怎么用的 一般用于 干嘛 你还记得你需哦使用的相关的头文件 或者某些方法的名称吗
运行时机制 runtime 库里面包含了根类成员变量 方法相关的api 比如获取类里面的所有成员变量 动态改变类的实现方法
为类动态添加 新的方法等 需要导入 《objc/message.h》<objc/runtime.h>
1> runtime 运行时机制 他是一套c语言程序库
2 实际上我们编写的所有的oc代码 最终都成了runtime 库的东西 比如类转成了runtime库里面的结构体数据类型
方法转成了runtime 库里面的c语言程序 平时掉方法 转成了 objc_message send 函数
3 因此 可以说runtime 是oc的底层事项 是oc的幕后执行者
4 有了runtime 库 能做什么事情呢 runtime 库里面包含了 根类成员变量方法 方法相关的api 比如获取类里面的所有成员变量
动态改变类的方法实现 为类动态添加新的方法
5 因此 有了runtime 想怎么该就怎么改
8.是否使用Core Text或者Core Image等?如果使用过,请谈谈你使用CoreText或者Core Image的体验。
CoreText
• 随意修改文本的样式
• 图文混排(纯C语言)
• 国外:Niumb
Core Image(滤镜处理)
* 能调节图片的各种属性(对比度, 色温, 色差等)
9.NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)
通知比较灵活(1个通知能被多个对象接收, 1个对象能接收多个通知),
代理比较规范,但是代码多(默认是1对1)
KVO性能不好(底层会动态产生新的类),只能监听某个对象属性的改变, 不推荐使用(1个对象的属性能被多个对象监听, 1个对象能监听多个对象的其他属性)
更详细参考:
http://blog.csdn.net/dqjyong/article/details/7685933
10.Block内部的实现原理
Objective-C是对C语言的扩展,block的实现是基于指针和函数指针
11. 有两个数组a,b,大小都为n,数组元素的值任意,无序;
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
算法题,要么靠功底,要么百度