我在.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"];
。
答案 0 :(得分:4)
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方法。