object-c 语言优缺点

优点:

1) Cateogies

  2) Posing  

  3) 动态识别

  4) 指标计算

  5)弹性讯息传递 

 

  6) 不是一个过度复杂的 C 衍生语言  

  7) Objective-C C++ 可混合编程
Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容

 

动态类型

可以让你的代码在运行时判断对象的类型。id 数据类型可以在运行时用任何数据类型来替换。所以,你可以让运行时因素来决定代码中用到的对象是什么类型。动态类型让你的应用更加灵活,这是静态类型做不到的,不过这会让数据的严格统一性降低。【注意:静态类性中的类都是固定种类的(比如 NSString *var),它有自身的优势,实际上用处比动态类型更广泛。打个比方,使用静态类型,编译器就可以完全分析你的代码。这让代码性能和可预知性更高。在其他面向对象编程语言中,动态类型有时被成为弱类型,静态类型被成为强类型。】

 

动态绑定

让你的代码在运行时判断需要调用什么方法,而不是编译时。就像动态类型把对象的类型放到运行时再去判断一样,动态绑定把选择调用哪种方法的任务放到了运行时去完成。和其他面向对象语言一样,方法调用和代码并没有在编译时就联结在一起,只有在消息发出时,它们才真正联结。 动态类型和动态绑定的存在使得选择哪个接收者以及调用哪个方法都可以在运行时来决定。用一个画图程序来打比方,它能够定义从父类继承而来的图形类应该怎样归类;你可以直接在某个对象上调用 draw 方法,无需知晓该对象的类以及它绘制自己的具体途径。

 

动态载入

可以让你的程序在运行时添加代码模块以及其他资源。有了动态载入特性,应用可以根据需要加载一系列可执行代码以及资源,而不是在启动时就加载所有组件。这能够大大提高性能。可执行代码中可以含有和程序运行时整合的新类。

缺点:

1) 不支持命名空间 ,取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突

  2)  不支持运算符重载 

 

  3) 不支持多重继承 

  4) 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。

 

 

你可能感兴趣的:(object)