我的问题非常简单(对不起我的英语,我说西班牙语)
我有
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);
}
我需要保存上面方法指定的值,请帮忙!非常感谢你
答案 0 :(得分:1)
这里有几件事需要解决:
为您的媒体使用小写字母:claseUsuario
。这对KVC很重要。
根本不要申报ivar。只需使用
@syntheisze claseUsuario=_claseUsuario;
(注意前导下划线。除非您为非常旧的系统编写,否则很少有理由明确声明实例变量。)
除init
和dealloc
外,请始终使用访问者。所以这应该是self.claseUsuario = @"C";
。这将确保内存管理正常工作。
通常,您的NSLog
应采用以下格式:
NSLog(@"Ofertas usario tipo: %@", self.claseUsuario);
请勿使用前导IBAction
为您的set
命名。这可能会使KVC感到困惑,因为它看起来像是一个访问者。
问题的可能实际原因是永远不会调用setLabelEdad
,或者您在其他地方清除claseUsuario
,或者您正在查看错误的对象。在setLabelEdad
中放置一个断点来测试这些。