Objective-C @接口/指针澄清

时间:2009-07-25 19:09:10

标签: objective-c cocoa pointers interface class

一如既往地学习,一直很顺利,直到我意识到我不知道它们之间的差异意味着什么。

@class Player;
@class Map;

@interface View : NSView
{
    Player* player_;
    Map* currentMap_;
    NSMutableArray *worldArray;
    NSMutableArray *itemArray;
    float cellHeight_;
}

@end

没关系,结果明星所在的一面根本没有效果。现在我知道为什么我这么困惑。

2 个答案:

答案 0 :(得分:7)

所有客观C对象都由指针引用,这就是*表示的。星是左侧还是右侧对编译器无关紧要;我相信这是个人偏好。

float没有*因为它是C原语,而不是Objective C对象。

答案 1 :(得分:2)

它对编译器没有任何影响。这完全是开发人员的偏好。

以下是相同的:

Player* player_;
Player *player_;
Player * player_;

我曾经读过一篇有趣的评论关于某人类型的思考过程:

Player* player_;

vs某人的类型:

Player *player_;

我现在找不到它,因为这种东西不可能谷歌。基本思想是输入Player *的开发人员认为player_是指向Player对象的指针。以另一种方式键入它的人认为Player对象包含在解除引用的player_变量中。一个微妙的差异,但最终是相同的。

您可能需要注意的一件事是在一行中创建多个指针变量:

int *p, q;   // p is int*, q is int
int* p, q;   // not so obvious here, but p is int*, q is int
int *p, *q;  // it's a lot more obvious with the * next to the variable