0

我试图在 Xcode 中设置一个 BOOL 并且由于某种原因它明显拒绝工作。没有其他东西在设置这个布尔值,只有这个实例。我的代码如下:

。H

@interface SuspectsViewController : UIViewController 
{
    BOOL boolContentChanged;
}

@property (nonatomic) BOOL boolContentChanged;

.m

@synthesize boolContentChanged;

-(IBAction)buttonPressed:(id)sender
{
    boolContentChanged = true;
}

我也尝试过使用 self.boolContentChanged 但也没有任何反应。为了尝试调试它,我使用了 po boolContentChanged 并获得以下输出,第一个 po 在 boolContentChanged = true 之前,第二个在之后。

(lldb) po boolContentChanged
(BOOL) $4 = '\0' <nil>
(lldb) po boolContentChanged
(BOOL) $7 = '\0' <nil>

$ 是否表示它指向某个地址,还是纯粹用于调试参考?

另外,有什么理由会为零吗?如果它是布尔值而不是指针,肯定不需要隐式设置吗?

对此的任何建议都非常感谢,因为我无法解决,在此先感谢 Elliott

4

3 回答 3

8

调试器 (gdb) 中的“po”是“print-object”的缩写。该BOOL类型不是 Objective-C 对象。使用 "p" 或 "print" 显示BOOL, int,char等的值。

调试器响应您的“po”命令输出的美元数字(“$4”)将结果分配给调试器中的一个变量,您可以在以后的命令中使用该变量。

至于您描述的问题,您能否确认您的操作方法实际上正在被调用?尝试添加:

NSLog( @"In %@", NSStringFromSelector( _cmd ));

到你的-buttonPressed方法。如果您的操作实际上被调用,您将在调试器中看到:

在按钮按下:

您还可以NSLog()输出您的值BOOL

NSLog( @"Before: %d", (int)boolContentChanged );
于 2012-04-11T15:26:49.727 回答
0

我终于设法弄清楚发生了什么。关于调试器,它确实使用 YES / NO 而不是 true / false 产生了实际差异,如果我使用 p 显式查找它们,值仍在设置中,但是当使用 YES / NO 时,它们会自动显示。因此,这似乎是智能感知在某些情况下无法更新。

感谢大家的帮助。

于 2012-04-13T13:58:27.587 回答
-2

当您使用 BOOL 时,您需要使用 YES 或 NO 而不是 true 和 false。

于 2012-04-10T10:46:53.690 回答