Objective-C语言
- 分类(什么是分类?分类的实现机制、原理是怎样的?我们应该怎样为一个分类提供实例变量呢?--涉及到第2点关联对象的考察)
- 关联对象(Runtime分析和查看 分类和关联对象的实现机制、原理)
- 扩展、代理怎么使用(分类和扩展的区别在哪里?)
- NSNotification(通知的实现机制和原理)
- KVO、KVC( KVO、KVC的实现机制、原理、包括涉及到了哪些设计思想)
- 属性关键字(声明属性时,会用到一些关键字的实际问题)
1.MRC下如何重写retain修饰变量的setter方法?
我们开发中一般使用ARC,但是一些公司遗留下的文件是MRC下的,所以说需要掌握一些MRC方面的知识内容。
2.请简述分类的一个实现原理:
- 是由运行时决议的
- 不同分类中含有同名分类方法,谁最终生效,取决于谁最后参与编译
- 假如分类中添加的方法恰好是宿主类中的同名方法,分类方法会"覆盖"同名的宿主类方法
- (所谓的覆盖:消息传递过程中会优先查找数组靠前的元素,若找到了就会调用,但宿主类的同名方法仍然存在)
3.KVO的实现原理是怎样的?
- 是系统关于观察者设计模式的一种实现(每次当被观察对象的某个属性值发生改变时,注册的观察者便能获得通知)
- Apple使用isa混写技术(isa-swizzling)来实现KVO,本质是重写了setter方法来动态运行时去为某一个类添加一个子类,然后重写它的setter方法,同时把原有类的isa指针指向新创建的这个类上面。
4.能否为分类添加成员变量?
关联对象这种技术来为分类添加成员变量。