Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 这是什么->;符号是什么意思?_Iphone - Fatal编程技术网

Iphone 这是什么->;符号是什么意思?

Iphone 这是什么->;符号是什么意思?,iphone,Iphone,我现在有点困惑,因为我看到了一个iPhone SDK的代码片段,它使用->而不是点符号。它看起来很像PHP,但在iPhone上确实可以工作。有人能解释一下->到底是怎么回事吗?这是我应该知道的深层秘密吗 例如: - (void)setFileURLs: (NSArray*)elements { if (self->fileURLs != elements) fileURLs是一个实例变量或属性,如下所示: @property(nonatomic, retain) NSArray

我现在有点困惑,因为我看到了一个iPhone SDK的代码片段,它使用->而不是点符号。它看起来很像PHP,但在iPhone上确实可以工作。有人能解释一下->到底是怎么回事吗?这是我应该知道的深层秘密吗

例如:

- (void)setFileURLs: (NSArray*)elements {
    if (self->fileURLs != elements)
fileURLs是一个实例变量或属性,如下所示:

@property(nonatomic, retain) NSArray *fileURLs;
还有一个用于文件URL的@synthesis。 现在我想这是:因为这是FileURL的setter方法,所以使用点表示法访问实例变量是不好的。事实上,当我这样做时,应用程序崩溃了。这是因为它一次又一次地调用自己,因为点表示法直接访问访问器方法,而不是ivar。但是->将直接访问ivar


如果是这样的话,问题会有一点变化:为什么要写“self->fileurl”而不仅仅是“fileurl”?在它前面添加self->header有什么意义?这有意义吗?为什么?

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

请参阅“其他运算符”一节:


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

除了因为定义了一个属性,self.fileURLs就可以正常工作之外。。。似乎有人使用C++使用Objut-C.Hiel-Fiell访问成员变量(如上面提到的MouvixEL)。self.fileURLs正在运行fileURLs属性的访问器方法,该方法可能返回完全不同的内容。