不同方法中的变量值

时间:2012-06-08 19:58:33

标签: objective-c variables

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

我有

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);   
}

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

1 个答案:

答案 0 :(得分:1)

这里有几件事需要解决:

为您的媒体使用小写字母:claseUsuario。这对KVC很重要。

根本不要申报ivar。只需使用

@syntheisze claseUsuario=_claseUsuario;

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

initdealloc外,请始终使用访问者。所以这应该是self.claseUsuario = @"C";。这将确保内存管理正常工作。

通常,您的NSLog应采用以下格式:

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

请勿使用前导IBAction为您的set命名。这可能会使KVC感到困惑,因为它看起来像是一个访问者。

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