代码之家  ›  专栏  ›  技术社区  ›  Jeff

Objective-C:为什么它被称为“id”?

  •  27
  • Jeff  · 技术社区  · 16 年前

    为什么Objective-C对象类型被称为“id”?与“对象”相对?

    5 回复  |  直到 15 年前
        1
  •  48
  •   Andy Dent    16 年前

    它之所以被称为id,是因为从字面上看,它代表了所有类型——一个标识符。

    引用Brad Cox的话 Object Oriented Programming: an Evolutionary Approach (实际上,第一版,我买的第一本面向对象的书之一): id消耗固定数量的空间,其宽度足以标识任何时候可能存在的尽可能多的对象。此空间与对象本身中私有数据占用的空间不同。对象标识符是固定大小的数字,。..

        2
  •  8
  •   Redwood    16 年前

    我想这里没有提到的另一种可能性是,Objective-C的人是拉丁语爱好者,他们的基础是拉丁语代词id(意思是“它”)的单数主格/定语(主语/宾语)形式。它是一个指向特定对象的通用词,id是指向通用对象的指针,所以,你永远不会知道:)。

        3
  •  2
  •   paxdiablo    16 年前

    也许这是阶级系统的本我(如弗洛伊德的本我/自我/超我)——考虑到本我是生物体的基本性质,这有点道理。反正我也不相信弗洛伊德的垃圾:-)。

    或者,Obj-C的开发者可能来自UNIX命名学派(使用“ls”或“cd”),而不是VAX学派(使用其“show directory”和“set directory”)。

    或者,它可以代表例如数据,这可能更有可能。

        4
  •  2
  •   Ryan Townshend    16 年前

    没有证据的理论:

    “身份”怎么样,因为它是指向任何唯一对象的指针。

        5
  •  0
  •   Matthew Schinckel    16 年前

    正如Ryan所指出的,它实际上是一个指针:IIRC是NSObject*。

    至于命名,也许命名器使用Dvorak键布局。在这种情况下,“id”很容易输入(就像在Qwerty键盘上输入“gh”一样)。

    推荐文章