为什么Objective-C被认为是一个简单的语言?

Rem*_*ver 0 language-features objective-c

我听说它说Objective-C是一种"简单"的语言,即它的语言特征.它确实是我所知道的唯一语言,但之前我做过一些Java,就语言特性而言,它们似乎非常接近.

我从未接触过C++.与Objective-C相比,C++是否有更多功能?如果是这样,使用这个额外的功能集是否有优势?

Ale*_*ski 6

我从来没有听说过Objective-C被描述为一种"简单的语言"; 相反,Objective-C的一些语言特性 - 例如动态绑定,类别和内省 - 使其成为一种相当强大的语言.

然而,有几个原因可以将它看作是一种功能较少的语言,包括:

  • 在Apple的Objective-C 2.0之前没有垃圾收集(一般来说),在此之前,内存主要通过引用计数来管理; 这与使用垃圾收集进行所有内存管理的Java等语言不同.
  • Objective-C中没有名称空间; 再次,这不像其他语言,如C++.惯例是类和函数应该加上前缀,可以在Foundation,AppKit等中看到,它们以NS- 为前缀.这有时可能是一个缺点.
  • 没有真正的抽象类.在Objective-C中,抽象类只是按设计抽象,并且仍然可以按原样实例化,并且不会生成编译器警告或错误.
  • 没有运算符重载.这是由于Objective-C运行时的性质以及方法调度的工作原理.相反,采用不同参数类型的方法必须以不同方式命名; 这可能不一定是一个缺点,因为它通常可以提高代码的清晰度.

尽管如此,Objective-C还是有一些相当有用的功能,其中一些功能直接或间接地是缺少其他语言可能具有的某些功能的结果,例如:

  • 使用描述性名称(由于没有运算符重载)通常会澄清代码并允许它在许多情况下自我记录.
  • 类别对于扩展您无法直接访问的类非常有用.
  • 动态分派意味着您可以随意添加,更改或删除方法,并提供强大的类内省.