无法为BOOL分配值

时间:2012-08-15 16:55:48

标签: objective-c

看起来很简单,但我不知道为什么它不起作用。

在我的.h文件中,我已声明:BOOL keyboardIsUp;

然后在我的.m文件中:

-(void)keyboardWillShow {

    NSLog(@"before:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    NSLog(@"keyboardWillShow");
    keyboardIsUp = YES;

    NSLog(@"after:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    ...
}

-(void)keyboardWillHide {

    NSLog(@"before:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    NSLog(@"keyboardWillHide");
    keyboardIsUp = NO;

    NSLog(@"after:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    ...
}

-(BOOL)keyboardStatus{
    NSLog(@"keyboardStatus");

    NSLog(keyboardIsUp? @"Yes" : @"No");

    return keyboardIsUp;
}

这些方法肯定被正确调用(我可以从NSLog消息中看到这一点)并且在前两种方法中使用我的NSLog消息,我可以看到BOOL设置正确(在范围内)功能)。

但是当我打电话给keyboardStatus时,它总是记录“NO”

有什么想法吗?我已经搜索了其余的代码,我肯定没有在其他地方更改keyboardIsUp的值。

2 个答案:

答案 0 :(得分:2)

您确定要与对象的正确实例交谈吗?

即。将其添加到每个方法的开头:

NSLog(@"[%@(%p) %@]", self, self, NSStringFromSelector(_cmd));

如果十六进制数在keyboardWillHide/ShowkeyboardStatus之间发生变化,那么您正在与不同的实例进行对话。如果没有,还会发生其他事情。

答案 1 :(得分:1)

也许你没有在同一个对象上调用它们?

相关问题