Objective c 不同方法中的变量值

Objective c 不同方法中的变量值,objective-c,variables,Objective C,Variables,我的问题很简单(对不起,我是英语,我会说西班牙语) 我有 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)

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

我有

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

}

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

这里有几件事需要解决:

为属性使用前导小写字母:
claesuario
。这对KVC很重要

根本不要申报ivar。只用

@syntheisze claseUsuario=_claseUsuario;
(请注意前导下划线。除非您是为非常旧的系统编写的,否则很少有理由再显式声明实例变量。)

除了在
init
dealloc
中,始终使用访问器。所以这应该是
self.claesuario=@“C”。这将确保内存管理正常工作

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

NSLog(@"Ofertas usario tipo: %@", self.claseUsuario);
不要用前导的
集合
命名您的
iAction
。这可能会混淆KVC,因为它看起来像一个访问器


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

您好,非常感谢。按我说的做,但不维护变量的值。您检查了值是否已实际设置,然后未设置,以及self在这两种情况下是否相同?请在其他日志语句之前立即记录以下内容:
NSLog(@“我是%@”,self)
@syntheisze claseUsuario=_claseUsuario;
NSLog(@"Ofertas usario tipo: %@", self.claseUsuario);