协议中<NSobject>是什么意思? 子类继承了父类,子类会遵守父类遵守的协议吗?
会遵守NSObject协议,但是只在头文件中声明,编译器是不会自动生成实例变量的。需要自己处理getter和setter 方法
NS/CF/CG/CA/UI这些前缀分别是什么含义:
CF CocoaFundation框架
CG CoreGraphics框架
CA Coreanimatigon框架
UI UIkit框架
我们说的Objective-c 是动态运行时语言 So what ? when we call object c is runtime language what does it mean ?
主要是将数据类型的确定由编译时,推迟到了运行时。这个问题其实涉及到两个给你按,运行时和多态。
简单的说运行时使我们知道运行时才去决定一个对象的类别,以及调用改类别对象指定方法。
多态:不同的对象以及自己的方法相应相同的消息的能力叫做多态。
意思就是假设生物类都拥有一个相同的eat方法,那人类也属于生物,猪也是生物都继承了lift后,实现搁置的eat,但是调用是我们需要调用各自的eat方法。也就是不同的对象以自己的方式相应了相同的消息。因此也可以说运行时机制十多态的基础。
NotificationCenter KVO KVC Delegate 之间有什么区别
KVO 一对多,观察者模式,键值观察机制,他提供了观察耨个属性变化的方法,极大地简化了代码。
KVC 是键值编码,一个对象调用setValue的时候 1检测是否存在相应的key的set方法,存在就调用Set方法2set方法不存在就检查key的成员是否存在存在就赋值。如果key没找到 就查找相同名称的key,存在就赋值。如果没有就调用valueForUndefinekey好setValue:forUndefinedKey.
Delegate 通常发送者和接受者关系是直接的一对一的关系。
1代理的目的是改变或传递控制链,允许一个类在某个特定的时刻通知到其他类,而不惜要获取那些类的指针。
2可以减少框架的浮复杂度,消息的发送者告知接受者某个事件将要发生,delegate同意然后后发送者相应事件,delegate机制使得接受者可以改变发送者的行为。
Notification:观察者模式,通常发送者和接收者是多对多关系,详细的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反映过来影响发送者的行为。
区别
效率肯定是delegate 比NSNotification高。
delegate方法比notification 更加直接,需要关注返回值,所以delegate方法往往包含should这个很传神的词,相反的notification最大的特色就是不关心结果。所以notification往往用did这个词汇。
两个模块之间的联系不是很紧密,就用notification传值,例如多线程之间的传值用notification。
delegate 只是一个较为简单的回调,且主要用在一个模块中,例如底层的功能完成了,需要将一些值传到上层去,就事先把上层的函数通过delegate传到低层,然后到底层call这个delegate,他们都在一个米快中,完成一个功能,例如NavgationController从B到A点返回按钮可以用delegate。