Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Objective-C被认为是一种简单的语言?_Objective C_Language Features - Fatal编程技术网

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

为什么Objective-C被认为是一种简单的语言?,objective-c,language-features,Objective C,Language Features,我听说Objective-C是一种“简单”语言,即就其语言特性而言。它确实是我所知道的唯一一种语言,但我以前做过一点Java,就语言特性而言,它们似乎非常接近 我从未接触过C++。与Objto-C相比,C++有更多的特征吗?如果是的话,使用这个额外的特征集是不是一个优势? < P>我从未听说过Objul-C被描述为一种简单的语言。相反,Objective-C的一些语言特性——如动态绑定、类别和内省——使其成为一种相当强大的语言 然而,有几个原因可以解释为什么它是一种功能不如其他语言丰富的语言,包

我听说Objective-C是一种“简单”语言,即就其语言特性而言。它确实是我所知道的唯一一种语言,但我以前做过一点Java,就语言特性而言,它们似乎非常接近


<>我从未接触过C++。与Objto-C相比,C++有更多的特征吗?如果是的话,使用这个额外的特征集是不是一个优势?

< P>我从未听说过Objul-C被描述为一种简单的语言。相反,Objective-C的一些语言特性——如动态绑定、类别和内省——使其成为一种相当强大的语言

然而,有几个原因可以解释为什么它是一种功能不如其他语言丰富的语言,包括:

  • 在苹果推出Objective-C2.0之前(一般来说)没有垃圾收集,在此之前,内存主要通过引用计数进行管理;这与Java等使用垃圾收集进行所有内存管理的语言不同
  • Objective-C中没有名称空间;这又不同于其他语言,如C++。惯例是类和函数应该是前缀,如在基金会、AppKIT等中可以看到的,这些代码和函数前缀为<代码> NS 。这有时可能是一个缺点
  • 没有真正的抽象类。在Objective-C中,抽象类只在设计上是抽象的,仍然可以按原样实例化,并且不会生成编译器警告或错误
  • 没有运算符重载。这是由于Objective-C运行时的性质以及方法分派的工作方式。相反,采用不同参数类型的方法必须以不同的方式命名;这不一定是一个缺点,因为它通常可以提高代码的清晰度
然而,尽管如此,Objective-C仍有一些相当有用的功能,其中一些功能是由于缺乏其他语言可能具有的某些功能而直接或间接产生的,例如:

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

我从未听说过Objective-C被描述为“简单语言”;相反,Objective-C的一些语言特性——如动态绑定、类别和内省——使其成为一种相当强大的语言

然而,有几个原因可以解释为什么它是一种功能不如其他语言丰富的语言,包括:

  • 在苹果推出Objective-C2.0之前(一般来说)没有垃圾收集,在此之前,内存主要通过引用计数进行管理;这与Java等使用垃圾收集进行所有内存管理的语言不同
  • Objective-C中没有名称空间;这又不同于其他语言,如C++。惯例是类和函数应该是前缀,如在基金会、AppKIT等中可以看到的,这些代码和函数前缀为<代码> NS 。这有时可能是一个缺点
  • 没有真正的抽象类。在Objective-C中,抽象类只在设计上是抽象的,仍然可以按原样实例化,并且不会生成编译器警告或错误
  • 没有运算符重载。这是由于Objective-C运行时的性质以及方法分派的工作方式。相反,采用不同参数类型的方法必须以不同的方式命名;这不一定是一个缺点,因为它通常可以提高代码的清晰度
然而,尽管如此,Objective-C仍有一些相当有用的功能,其中一些功能是由于缺乏其他语言可能具有的某些功能而直接或间接产生的,例如:

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

  • 因为我对C++和java等高级语言了解不多,所以我不想把它作为一个答案来回答,因为我相信有人会有一个非常彻底的解释,但是如果语言的特点是真的相隔千里的话。首先想到的是名称空间和运算符重载。几乎所有高级语言都有这些,但不是Objective-C。尽管如此,它仍然是一种非常棒的语言,特别是由于它借用了一些类似smalltalk的对象消息传递的约定,而不是常规的旧方法调用。谢谢。我将阅读有关名称空间和重载的内容。”很不错的语言——同意。单独的C++模板是整个Objc语言更复杂的…如果你在看语言的复杂性,从编译器的角度考虑实现/支持。因为我对C++和java等高级语言不太了解,所以我不想把它作为答案,因为我相信有人会有一个非常彻底的解释。但其要点是,在语言特征方面,它们确实相距甚远。首先想到的是名称空间和运算符重载。几乎所有高级语言都有这些,但不是Objective-C。尽管如此,它仍然是一种非常棒的语言,特别是由于它借用了一些类似smalltalk的对象消息传递的约定,而不是常规的旧方法调用。谢谢。我将阅读有关名称空间和重载的内容。”很不错的语言——同意。单独的C++模板更复杂了整个Objc语言