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

Ios 为什么我的setter方法没有被调用?,ios,objective-c,Ios,Objective C,我的.h文件中有这样一个文件:@property(非原子,强)NSMutableDictionary*valorestoaisnutricao 然后,我像这样覆盖setter和getter: -(void)setValoresTotaisNutricao:(NSMutableDictionary *)valoresTotaisNutricao { NSLog(@"setter"); [self oDicionarioEdeHoje]; if ([self oDiciona

我的.h文件中有这样一个文件:
@property(非原子,强)NSMutableDictionary*valorestoaisnutricao

然后,我像这样覆盖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;
}
我使用了
@synthesis valorestotaisnutrico=\u valorestotaisnutrico

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

更新:

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


[singleton.valorestoaisnutricao setObject:[NSNumber numberwhithint:222]forKey:@“teste”]
setObject:forKey:
不调用setter方法

singleton.valorestoaisnutricao
将调用你的getter方法,你已经懒洋洋地加载了你的属性,然后
setObject:[NSNumber numberwhithint:222]forKey:@“teste”
将为该字典上的
@“teste”
键设置一个值,但在该代码中没有任何地方调用你的setter方法

您需要使用以下任一选项:

singleton.valorestotaisnutrico=

或者这个:

[singleton SetValorestotaisNutrico:]


。。。调用setter方法。

setObject:forKey:
不调用setter方法

singleton.valorestoaisnutricao
将调用你的getter方法,你已经懒洋洋地加载了你的属性,然后
setObject:[NSNumber numberwhithint:222]forKey:@“teste”
将为该字典上的
@“teste”
键设置一个值,但在该代码中没有任何地方调用你的setter方法

您需要使用以下任一选项:

singleton.valorestotaisnutrico=

或者这个:

[singleton SetValorestotaisNutrico:]



。。。调用setter方法。

在您发布的代码中,没有任何地方可以调用setter方法。发布您希望setter应该被调用的代码。我从其他类调用它,使用:
[singleton.valorestoaisnutricao setObject:[NSNumber numberwhithint:222]forKey:@“teste”]
这不是您属性的setter方法。您混淆了NSDictionary上为键设置对象的方法与NSDictionary实例的setter方法。您发布的代码中没有任何地方调用setter方法。发布您希望setter应该被调用的代码。我使用:
[singleton.valorestoaisnutricao setObject:[NSNumber Withint:222]forKey:@“teste”]那不是你的属性的setter方法。你把NSDictionary上为键设置对象的方法和NSDictionary实例的setter混淆了。明白了。应该这样做。那么我需要创建另一个
字典并传递它吗?我想我必须复制一个,更改它并传递回去?我知道了ght我可以自定义直接写入该实例。是的,您将创建另一个字典以传递到setter方法中。等等,我要澄清的是,它不是另一个实例;它是第一个实例。您必须在属性引用任何内容之前对其进行初始化。啊,等等,我没有注意到您在getter中进行了某种延迟加载。明白吗t、 应该可以了。那么我需要创建另一个
字典并传递它吗?我想我必须复制该字典,更改它并传递回它?我想我可以直接自定义写入该实例。是的,您需要创建另一个字典来传递到setter方法中。等等,只是为了澄清一下,它不是另一个实例;它是这是第一个实例。您必须在属性引用任何内容之前对其进行初始化。啊,等等,我没有注意到您在getter中进行了某种延迟加载。