这似乎是一个微不足道的问题.
但是为什么我们在声明对象变量时必须使用星号符号
就像我们一样
Car * mazda = [[Car alloc] init];
Run Code Online (Sandbox Code Playgroud)
星号的重要性是什么,我的意思是编译器已经知道它是一个对象,我确信编译器可以训练不要抱怨它.但是再次通过省略它,我收到一条错误消息"静态分配objective-c类NSObject的实例"这个服务的目的是什么?
Mar*_*oft 11
asterix是您声明的Car变量的限定符.这意味着你要声明一个指向Car的指针,而不是声明一个Car本身.init函数的返回值(以及该函数的alloc函数)是指向Car的指针,而不是Car本身,因此这是正确的.
随着*你声明一个指针.这就像在C中,它是ObjC的一个子集.没有*变量将静态分配,这对于ObjC对象是不可能的(因为在编译时无法确定对象的大小).
静态分配的变量用于原始C类型,如int或double
int number = 42;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7870 次 |
| 最近记录: |