gpt4 book ai didi

objective-c - 为什么自定义 setter 的存在会破坏我的自定义 getter?

转载 作者:行者123 更新时间:2023-12-03 17:39:13 26 4
gpt4 key购买 nike

我正在构建一个数据库迁移工具,它是一个 Mac 应用程序,并且在为属性制作自定义 getter/setter 时遇到了一个奇怪的问题。

对于名为 parentStore 的属性,我有这个 setter/getter :

- (CCStore *)parentStore {
if (!_parentStore) {
_parentStore = [[CCStore alloc] initWithStoreID:self.storeID];
}

return _parentStore;
}

非常简单,没有任何问题。

现在,当我尝试制作自定义 setter 时,Xcode 就对我大发雷霆。

- (void)setParentStore:(CCStore *)parentStore {

}

我刚在这个 setter 上输入完签名,Xcode 就声称使用 _parentStore getter 上面是一个未声明的标识符。我 sleep 不足,所以我可能只是在做一些愚蠢的事情,但我不知道发生了什么!

屏幕截图如下:

enter image description here

最佳答案

如果您同时重写 getter 和 setter,那么您基本上是在说您不希望 llvm 提供合成的支持 ivar。这将是一种浪费,因为它不知道您是否要使用它。

只需在类中自己声明 ivar:

@implementation MyClass

@synthesize parentStore = _parentStore;

- (CCStore *)parentStore
{
if (!_parentStore) {
_parentStore = [[CCStore alloc] initWithStoreID:self.storeID];
}
return _parentStore;
}

- (void)setParentStore:(CCStore *)parentStore
{
// do nothing
}

由于您忽略了 setter,因此最好将其设置为只读属性,然后根本不定义 setter。

关于objective-c - 为什么自定义 setter 的存在会破坏我的自定义 getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24255520/

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