在Obj-C上阅读各种文本或代码示例时,我看到如下指针声明:
NSString *myStringPtr
但有时候我会看到,
NSString * myStringPtr
名称和*之间有空格。
这些声明之间是否存在差异,或者它们只是指向NSString类型对象的指针,还是我错过了什么?
一般来说*和名称之间的空格是必要的吗?
我甚至见过 NSString * myStringPtr这与上述陈述有何不同?
我意识到(NSString *)方法返回类型或参数意味着该方法返回(或传递)指向NSString对象的指针。
答案 0 :(得分:1)
不,星号可以附加到名称或类型,或者介于两者之间(空格作为填充)。没什么区别。但是,Objective-C最常使用样式
NSString *myStr;
而不是
NSString * myStr;
或
NSString* myStr;
如果您将多个变量声明为一行,则指针的放置会产生影响。例如,这个
int* a, b;
在功能上与此相同:
int *a;
int b; /* Note: This is not a pointer! */
(注意:这也适用于C,因为这在技术上是一个C语法问题,而不是Objective-C特有的。)