Objective c 关于「;id";在苹果的obj-c编程指南中

Objective c 关于「;id";在苹果的obj-c编程指南中,objective-c,ios,Objective C,Ios,id 在Objective-C中,对象标识符是一种不同的数据类型:id。这种类型是任何类型对象的通用类型,而不考虑类,可以用于类实例和类对象本身 id anObject; 在这里,它简单明了 对于Objective-C的面向对象构造(如方法返回值),id将替换int作为默认数据类型。(对于严格的C构造,例如函数返回值,int仍然是默认类型。) 不明白它在说什么?在最后一个内括号中,int仍然是默认值 关键字nil定义为空对象,即值为0的id。id、nil和Objective-C的其他基本类

id 在Objective-C中,对象标识符是一种不同的数据类型:id。这种类型是任何类型对象的通用类型,而不考虑类,可以用于类实例和类对象本身

id anObject;
在这里,它简单明了


对于Objective-C的面向对象构造(如方法返回值),id将替换int作为默认数据类型。(对于严格的C构造,例如函数返回值,int仍然是默认类型。)

不明白它在说什么?在最后一个内括号中,int仍然是默认值


关键字nil定义为空对象,即值为0的id。id、nil和Objective-C的其他基本类型在头文件objc/objc.h中定义

id定义为指向对象数据结构的指针:

typedef struct objc_object {
    Class isa;
} *id;
以上不是obj-c语法它是什么,它在解释什么


因此,每个对象都有一个isa变量,告诉它它是一个实例的类。由于类类型本身定义为指针:

typedef struct objc_class *Class;
isa变量通常被称为“isa指针”

我也不明白最后一段

不明白它在说什么

Objective-C是C的超集

在C语言中,函数必须有一个返回值。如果未指定返回值,则默认情况下函数返回
int

Objective-C覆盖C的默认行为,并将
id
作为未指定其返回值的任何类方法的默认值返回。但同时,其他(C-)函数的默认行为保持不变(即,
int
仍然是其他所有函数的默认返回值)

不明白它在说什么

Objective-C是C的超集

在C语言中,函数必须有一个返回值。如果未指定返回值,则默认情况下函数返回
int

Objective-C覆盖C的默认行为,并将
id
作为未指定其返回值的任何类方法的默认值返回。但同时,其他(C-)函数的默认行为保持不变(即,
int
仍然是其他所有函数的默认返回值)

对于Objective-C的面向对象构造(如方法返回值),id将替换int作为默认数据类型。(对于严格的C构造,例如函数返回值,int仍然是默认类型。)

你的书有点让人困惑。它所说的是,如果您正在处理对象,并且不想变得更具体,
id
是一种很好的数据类型

id定义为指向对象数据结构的指针:

typedef struct objc_object {
    Class isa;
} *id;
以上不是obj-c语法它是什么,它在解释什么

这是一个对象的内部表示。你的书试图证明一个客观的C对象不是魔法:在表面之下它只是一个结构。数据类型
id
是指向此类结构的指针

因此,每个对象都有一个isa变量,告诉它它是一个实例的类。由于类类型本身定义为指针:

typedef struct objc_class *Class;
typedef结构对象类*class

isa变量通常被称为“isa指针”

在其内部数据结构中,每个对象都有一个指向表示其类的另一个对象的指针

如果你只是对Objective-C编程感兴趣,你不需要知道这些东西(至少在你学习的时候不需要)。如果您正在做一些高级工作,例如直接与Objective-C运行时交互时,它确实会派上用场

对于Objective-C的面向对象构造(如方法返回值),id将替换int作为默认数据类型。(对于严格的C构造,例如函数返回值,int仍然是默认类型。)

你的书有点让人困惑。它所说的是,如果您正在处理对象,并且不想变得更具体,
id
是一种很好的数据类型

id定义为指向对象数据结构的指针:

typedef struct objc_object {
    Class isa;
} *id;
以上不是obj-c语法它是什么,它在解释什么

这是一个对象的内部表示。你的书试图证明一个客观的C对象不是魔法:在表面之下它只是一个结构。数据类型
id
是指向此类结构的指针

因此,每个对象都有一个isa变量,告诉它它是一个实例的类。由于类类型本身定义为指针:

typedef struct objc_class *Class;
typedef结构对象类*class

isa变量通常被称为“isa指针”

在其内部数据结构中,每个对象都有一个指向表示其类的另一个对象的指针


如果你只是对Objective-C编程感兴趣,你不需要知道这些东西(至少在你学习的时候不需要)。如果你正在做一些高级的事情,比如当你直接与Objective-C运行时交互时,它会派上用场。

澄清你所说的“上面的不是obj-C语法,它是什么,它在解释什么?”澄清你所说的“上面的不是obj-C语法,它是什么,它在解释什么?”Hii shaggy,谢谢你的回复。我在询问这个typedef结构objc_对象{Class isa;}*id。。。这段代码在做什么?它在obj-c指南中有详细说明HIII shaggy,谢谢您的回复。我在询问这个typedef结构objc_对象{Class isa;}*id。。。这段代码在做什么?其在obj-c指南中有规定