财产没有保值

时间:2014-04-13 21:54:58

标签: ios objective-c

我的视图控制器中有一个属性(应用程序只有一个视图控制器)

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

    }


}

1 个答案:

答案 0 :(得分:3)

将属性从weak更改为strong(或者更好,在这种情况下为copy)。

一旦引用的对象被释放,弱属性就会设置为nil