有人能告诉我为什么行中有*?
宣言意味着什么?
NSString *someString;
谢谢你们
编辑:
谢谢你帮了我很多,但有时我看到声明没有* 例如:
BOOL是他们的不同;为什么这个声明中没有指针?答案 0 :(得分:4)
*
字符表示C世界中的“指针”(Objective-C所在的位置)
someString
是指向NSString
对象的指针。
在Objective-C中,您很少需要担心这一事实,因为所有对象都作为指针传递。您只需将someString
变量视为NSString
类的实例。
答案 1 :(得分:2)
您不能将变量声明为持有对象本身;你只能将它声明为持有指向对象的指针。 BOOL
不是对象,因此可以使用包含BOOL
的变量而不是指向一个的变量。数值类型,NSRange
和NSRect
等结构也是如此 - 任何不是Objective-C类实例的东西。
我不确定为什么NeXT / Apple添加了这个限制。如果我没记错的话,它只存在于Apple的GCC版本中; GNUstep版本没有它。也就是说,GNUstep版本允许您声明一个包含对象的变量(NSString myString
)。从未使用过GNUstep,我不知道这些变量在实践中有多么有用。
答案 2 :(得分:0)
它告诉编译器这是一个指向NSString的指针。
答案 3 :(得分:-1)
'bool'是编译器中的内置类型。对于编译器本身理解的所有原始类型,不需要指向这样的对象。 对于目标C类,由于语言的设计,指针始终是必需的。
有点难以解释......