为什么Objective-C对象类型称为'id'?而不是说,'对象'?
答案 0 :(得分:47)
它被称为id,因为字面意思是所有类型代表 - 标识符。
从Object Oriented Programming: an Evolutionary Approach引用Brad Cox(实际上,第一版,我购买的第一批OO书籍之一): ID占用固定数量的空间,宽度足以识别尽可能多的对象在任何时候都存在。此空间与对象本身中私有数据占用的空间不同。对象标识符是固定大小的数字,......
答案 1 :(得分:8)
我想这里没有提到的另一种可能性是,Objective-C人员是拉丁语爱好者,并以拉丁语代词id(意为“它”)的单数主格/指责(主语/宾语)形式为基础。它是一种针对特定对象的通用词,而id是指向泛型对象的指针,所以,你永远不会知道:)。
答案 2 :(得分:2)
也许它是阶级系统的id(如弗洛伊德的id / ego / superego) - 如果id是生物体的基本性质,那将会有点意义。并不是说我相信任何弗洛伊德垃圾: - )。
或者,也许Obj-C的开发者来自UNIX学校的名字(带有“ls”或“cd”),而不是VAX学校(带有“show directory”和“set directory”)。
或者,它可能代表数据,这可能更有可能。
答案 3 :(得分:2)
没有证据的理论:
'identity'怎么样,因为它是指向任何唯一对象的指针。
答案 4 :(得分:0)
正如Ryan所说,它实际上是一个指针:IIRC它是NSObject *。
至于命名 - 也许名字者使用Dvorak键布局。在这种情况下,'id'很容易输入(就像在Qwerty上输入'gh')。