gpt4 book ai didi

iphone - 这个 -> 符号是什么意思?

转载 作者:行者123 更新时间:2023-12-03 21:00:01 30 4
gpt4 key购买 nike

在看到 iPhone SDK 的代码片段使用 -> 而不是点表示法后,我现在有点困惑。它看起来很像 PHP,但它确实可以在 iPhone 上运行。有人可以解释一下 -> 是怎么回事吗?这是我应该知道的一些深层 C secret 吗?

示例:

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

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

@property(nonatomic, retain) NSArray *fileURLs;

还有一个用于文件URL 的@synthesize。现在我的想法是:因为这是 fileURL 的 setter 方法,所以使用点表示法访问实例变量是不好的。事实上,当我这样做时,应用程序崩溃了。这是因为它一遍又一遍地调用自身,因为点表示法访问访问器方法而不是直接访问 ivar。但是 -> 将直接访问 ivar。

如果这是正确的,问题会稍微改变一下:为什么要写“self->fileURLs”而不仅仅是“fileURLs”?在它前面添加 self-> 开销有什么意义?是否有意义?为什么?

最佳答案

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

关于iphone - 这个 -> 符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565441/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com