这是什么 - >象征意味着?

时间:2009-10-14 10:23:52

标签: iphone

在我看到iPhone SDK的代码片段后,我有点困惑,它使用了 - >而不是点符号。它看起来很像PHP,但它确实适用于iPhone。有人可以用 - > 来解释一下,我应该知道一些深层的C秘密吗?

示例:

- (void)setFileURLs: (NSArray*)elements {
    if (self->fileURLs != elements)

fileURLs是一个实例变量或属性,如下所示:

@property(nonatomic, retain) NSArray *fileURLs;

并且有一个@URnthesize for fileURLs。 现在我认为这是:因为这是fileURL的setter方法,使用点表示法来访问实例变量是不好的。事实上,当我这样做时,应用程序崩溃了。那是因为它一遍又一遍地调用自己,因为点符号直接访问访问器方法而不是ivar。但是 - >将直接访问ivar。

如果这是正确的,问题会有所改变:为什么然后写“self-> fileURLs”而不只是“fileURLs”?添加自我>的重点是什么?它前面的头顶?是否有意义?为什么呢?

2 个答案:

答案 0 :(得分:4)

a->b只是撰写(*a).b的另一种方式。这是一种访问由指针引用的对象的结构或实例变量的字段的方法。

答案 1 :(得分:-1)

请参阅:

中的“其他运营商”部分

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

由于self是指针,因此您必须使用->而不是.来访问其成员。将self引用添加到fileURLs之前可能只是作者使用的编码样式(相当于编写this.member)。