要了解objective-c语言的特性我们先要知道到底什么是objective-c语言。
它的的由来是这样的:
1.完全基于c语言
2在c基础上增加了面向对象编程语言的特性和Smalltalk消息机制。
3.内存方面考虑到Smalltalk内存回收有漫长的死亡时间,令整个系统失去功用。因此,因此objective-c没有采用垃圾回收机制。
objective-c和C++的比较:
单一继承:
objective-c仅仅支持单继承,不支持多继承。分类和协议不但可以提供多继承的好处,而且没有很多缺点。
动态:
oc是动态类型的。oc在运行时,可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
c++跟从面向对象编程里的Simula 67学派,而oc跟从Smalltalk学派。
在c++里,对象的静态类型决定你是否可以发送消息给他,而在oc里由动态类型决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。而Smalltall更加灵活,比如一些在Smalltall里看起来无误的程序拿到Simula 67里边就无法通过。
从很多方面来看,c++和oc的差别与其说是技术上的,不如说是思维方式上的。你是否想更加安全而失去灵活性。Simula学派认为既然程序设计出色何必再要灵活性,Smalltalk学派认为为了灵活性可以容忍运行时多出错。
注释:
根据上边所说,所谓的runtime指的就是上边的动态性,即在运行时可以允许对象根据字符串来访问方法和类。还可以动态连接和添加类。