Cocoa变量声明

时间:2009-07-15 09:07:50

标签: objective-c cocoa

有人能告诉我为什么行中有*?

宣言意味着什么?

NSString *someString;

谢谢你们

编辑:

谢谢你帮了我很多,但有时我看到声明没有* 例如:

BOOL是他们的不同;为什么这个声明中没有指针?

4 个答案:

答案 0 :(得分:4)

*字符表示C世界中的“指针”(Objective-C所在的位置)

someString是指向NSString对象的指针。

在Objective-C中,您很少需要担心这一事实,因为所有对象都作为指针传递。您只需将someString变量视为NSString类的实例。

答案 1 :(得分:2)

您不能将变量声明为持有对象本身;你只能将它声明为持有指向对象的指针。 BOOL不是对象,因此可以使用包含BOOL的变量而不是指向一个的变量。数值类型,NSRangeNSRect等结构也是如此 - 任何不是Objective-C类实例的东西。

我不确定为什么NeXT / Apple添加了这个限制。如果我没记错的话,它只存在于Apple的GCC版本中; GNUstep版本没有它。也就是说,GNUstep版本允许您声明一个包含对象的变量(NSString myString)。从未使用过GNUstep,我不知道这些变量在实践中有多么有用。

答案 2 :(得分:0)

它告诉编译器这是一个指向NSString的指针。

答案 3 :(得分:-1)

'bool'是编译器中的内置类型。对于编译器本身理解的所有原始类型,不需要指向这样的对象。 对于目标C类,由于语言的设计,指针始终是必需的。

有点难以解释......