gpt4 book ai didi

objective-c - 为自动合成属性创建 getter 方法时出现编译器错误

转载 作者:行者123 更新时间:2023-12-03 16:54:40 25 4
gpt4 key购买 nike

在类的接口(interface)中定义属性后,我使用自动生成的 _property 方法创建一个 setter 方法。一切都很顺利。然后我为同一属性创建一个 getter 方法。一旦我这样做,编译器就会抛出一个错误,指出 _property 在我使用它的所有地方都没有定义。

如果我只定义了 getter 或 setter,一切都会正常,但是一旦我定义了两者,_property 就不再存在。

如果我将 @synthesize property = _property; 添加到我的实现的顶部,问题就解决了,但这让我很难过。

最佳答案

这是正常的。如果声明一个属性,编译器通常会自动合成 ivar 以及 getter 和 setter 方法。

但是如果您显式定义自己的 getter 和 setter 方法,编译器将不再自动生成 ivar。您的解决方案是显式声明您自己的 ivar。您不需要 @synthesize 行,只需声明 ivar 即可。

出现此行为的原因是,很可能实现一个实际上不使用 ivar 的属性。因此,如果您同时定义了 setter 和 getter,编译器将让您自行决定是否需要 ivar。

顺便说一句 - 这不是 Xcode 4.6.2 中的新行为。自从编译器支持自动合成 ivars 以来,情况一直如此。

关于objective-c - 为自动合成属性创建 getter 方法时出现编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107308/

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