gpt4 book ai didi

ios - 为什么我的 setter 方法没有被调用?

转载 作者:行者123 更新时间:2023-11-28 19:01:18 26 4
gpt4 key购买 nike

我的 .h 文件中有这个:@property (nonatomic, strong) NSMutableDictionary *valoresTotaisNutricao;

然后,我像这样覆盖 setter 和 getter:

-(void)setValoresTotaisNutricao:(NSMutableDictionary *)valoresTotaisNutricao
{
NSLog(@"setter");
[self oDicionarioEdeHoje];
if ([self oDicionarioEdeHoje] == NO) {
// Data não está atualizada, apagar dicionário e setar nova.
[_valoresTotaisNutricao removeAllObjects];
[_valoresTotaisNutricao setObject:[self pegarFinalDoDia] forKey:@"data"];
}
_valoresTotaisNutricao = valoresTotaisNutricao;
}

-(NSMutableDictionary *)valoresTotaisNutricao
{
NSLog(@"getter");
if (!_valoresTotaisNutricao) {
_valoresTotaisNutricao = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[self pegarFinalDoDia], @"data", nil];
}
return _valoresTotaisNutricao;
}

我使用 @synthesize valoresTotaisNutricao = _valoresTotaisNutricao;

我的 getter 有效,但我的 setter 从未被调用。我试图在 @property 声明中显式声明方法名称,但效果不佳。

更新:

我尝试从另一个类向 NSMutableDictionary 添加一些值。

[singleton.valoresTotaisNutricao setObject:[NSNumber numberWithInt:222] forKey:@"teste"];

最佳答案

setObject:forKey:不会调用您的 setter 方法。

singleton.valoresTotaisNutricao将调用您延迟加载属性的 getter 方法,然后是 setObject:[NSNumber numberWithInt:222] forKey:@"teste"将为 @"teste" 的键设置一个值在该字典上,但在该代码中没有任何地方调用您的 setter 方法。

您需要使用以下任一方法:

singleton.valoresTotaisNutricao = <some mutable dictionary object>;

或者这个:

[singleton setValoresTotaisNutricao:<some mutable dictionary object>];

... 调用您的 setter 方法。

关于ios - 为什么我的 setter 方法没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212419/

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