0

我的问题很简单(对不起我的英语,我说西班牙语)

我有

NSString *ClaseUsuario;

@property (strong, nonatomic) NSString *ClaseUsuario;

我有一个方法可以改变我的变量的值

-(IBAction)setLabelEdad{
int val=(int)[botonEdad value];
if(val>0 && val<22){ClaseUsuario=@"C";}
if(val>=22 && val<35){ClaseUsuario=@"B";}
if(val>=35){ClaseUsuario=@"A";}

NSLog(ClaseUsuario);

}

但我的问题是,当我从另一种方法调用我的变量时,答案是 NULL

-(IBAction)VerOfertas{
NSLog(@"%@%@",@"Ofertas usario tipo: ",ClaseUsuario);   
}

我需要保存上面方法分配的值,请帮忙!非常感谢你

4

1 回答 1

1

这里有几件事要解决:

为您的属性使用前导小写字母:claseUsuario. 这对 KVC 很重要。

根本不要声明 ivar。只需使用

@syntheisze claseUsuario=_claseUsuario;

(注意前导下划线。除非您正在为非常旧的系统编写代码,否则很少有理由再显式声明实例变量。)

除了 ininitdealloc,始终使用访问器。所以应该是这样self.claseUsuario = @"C";。这将确保内存管理正常工作。

一般来说,你NSLog应该是这种形式:

NSLog(@"Ofertas usario tipo: %@", self.claseUsuario);

不要IBAction用前导命名你的set。这可能会使 KVC 感到困惑,因为它看起来像一个访问器。

问题的可能实际原因setLabelEdad是从未调用过,或者您claseUsuario在其他地方清除,或者您正在查看错误的对象。放置一个断点setLabelEdad来测试这些。

于 2012-06-08T20:07:50.747 回答