Cocoa是苹果的面象对象的框架
他的区别于其他面象对象的两大特性:
1.动态绑定
在多数面向对象的编程语言中,调用方法是由直接调用内存中一段固定的代码实现的。由于这种方法需要预定义的处理命令的类,因而限制了程序的设计,通常采用责任链模式作为其设计模式。虽然Cocoa在多数地方仍然采用这种方式,但通过Objective-C的动态绑定特性增加了更多设计的自由性。
在Objective-C中,消息由selector所代表,其为描述需要调用的方法的一个字符串。在发送消息时,该selector被送入Objective-C运行时中,在可用方法列表中寻找对应的方法,然后调用该方法的实际实现。由于selector只是文本数据,因此它可以保存在文件中,通过网络或在进程间传输,或以其它方式进行操作。
方法的实现是在运行时查找的,而非编译时。这样的做法会造成一些性能损失,但
动态绑定允许相同的selector代表不同的实现。
利用这些特性,Cocoa提供了一种通用的
数据管理技术,称为键-值编码(KVC)。这种技术
允许对象的数据或属性可以在运行时通过其键名进行查找,其中,属性的名称即为其值的键名。
在静态语言中,这样的做法是不可能的。KVC大大的增加了设计的自由度:通过KVC,无需知道对象的类型即可访问其属性或数据。另外,利用键-值-观测器(KVO)技术和NSUndoManager类,可以提供自动的撤销/重做支持。
2.内存管理
当然就是引用计数了,跟Java中垃圾回收机制很不同。