我的视图控制器中有一个属性(应用程序只有一个视图控制器)
@property (weak, nonatomic) NSString * correctAnswer;
在viewDidLoad中,我设置了这样的属性,并且日志语句确认它已被设置
self.correctAnswer = info.correctAnswer;
NSLog(@"correctAnswer %@", self.correctAnswer);
然而,当我单击视图中的一个按钮并尝试检查该按钮触发的动作(在同一个视图控制器中)中的相同属性时,结果是(null)
因此字符串比较是总是错的。你能解释一下我做错了吗?
- (IBAction)checkResponse:(UIButton *)sender {
UIButton *resultButton = (UIButton *)sender;
NSLog(@" The button's title is %@.", resultButton.currentTitle);
NSLog(@"correct answer %@", self.correctAnswer); //null
if ([resultButton.currentTitle isEqualToString:self.correctAnswer]){
NSLog(@"you guessed right");
}else {
NSLog(@"You guessed wrong");
}
}
答案 0 :(得分:3)
将属性从weak
更改为strong
(或者更好,在这种情况下为copy
)。
一旦引用的对象被释放,弱属性就会设置为nil
。