Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c BOOL设置不正确,调试输出混乱_Objective C_Xcode_Debugging_Initialization_Boolean - Fatal编程技术网

Objective c BOOL设置不正确,调试输出混乱

Objective c BOOL设置不正确,调试输出混乱,objective-c,xcode,debugging,initialization,boolean,Objective C,Xcode,Debugging,Initialization,Boolean,我试图在Xcode中设置BOOL,但由于某些原因,它显然拒绝工作。没有其他设置这个bool,只有一个实例。我的代码如下: h m 我也尝试过使用self.boolcontentchange,但也没有任何效果。为了尝试和调试这一点,我使用了poboolcontentchanged并获得以下输出,第一个po在boolContentChanged=true之前,第二个po在boolContentChanged=true之后 (lldb) po boolContentChanged (BOOL) $4

我试图在Xcode中设置BOOL,但由于某些原因,它显然拒绝工作。没有其他设置这个bool,只有一个实例。我的代码如下:

h

m

我也尝试过使用self.boolcontentchange,但也没有任何效果。为了尝试和调试这一点,我使用了poboolcontentchanged并获得以下输出,第一个po在boolContentChanged=true之前,第二个po在boolContentChanged=true之后

(lldb) po boolContentChanged
(BOOL) $4 = '\0' <nil>
(lldb) po boolContentChanged
(BOOL) $7 = '\0' <nil>
(lldb)po布尔内容已更改
(BOOL)$4='\0'
(lldb)po布尔内容更改
(BOOL)$7='\0'
$是否表示它指向某个地址,还是纯粹用于调试参考

还有,有什么理由会是零吗?如果它是bool而不是指针,那么肯定不需要隐式设置吗

非常感谢你给我的任何建议,因为我无法解决, 提前感谢,
Elliott

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

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

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

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

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

NSLog( @"In %@", NSStringFromSelector( _cmd ));
到您的
-按钮按下
方法。如果您的操作实际被调用,您将在调试器中看到:

在按下的按钮中:

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

NSLog( @"Before: %d", (int)boolContentChanged );
调试器(gdb)中的“po”是“打印对象”的缩写。
BOOL
类型不是Objective-C对象。使用“p”或“print”显示
BOOL
int
char
等的值

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

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

NSLog( @"In %@", NSStringFromSelector( _cmd ));
到您的
-按钮按下
方法。如果您的操作实际被调用,您将在调试器中看到:

在按下的按钮中:

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

NSLog( @"Before: %d", (int)boolContentChanged );

我终于弄明白发生了什么事。对于调试器来说,使用YES/NO与true/false相比确实有实际的区别,如果我使用p显式地查找这些值,则仍然会设置这些值,但是当使用YES/NO时,它们会自动显示。因此,在某些情况下,智能感知似乎再次无法更新


谢谢大家的帮助。

我终于弄明白发生了什么事。对于调试器来说,使用YES/NO与true/false相比确实有实际的区别,如果我使用p显式地查找这些值,则仍然会设置这些值,但是当使用YES/NO时,它们会自动显示。因此,在某些情况下,智能感知似乎再次无法更新


谢谢大家的帮助。

Objective-C使用
YES
NO
布尔文本,而不是
true
false
。不确定这是否有用…您的.h文件中的代码段不明确。我怀疑您同时拥有一个实例变量(为您合成的)和一个具有相同名称的全局变量,并且您在不同的上下文中引用了一个不同的变量。请显示准确的代码。大家好,我以前的代码是bool=true,而不是bool,但在定义上应该没有任何区别,无论如何我都会尝试一下。不幸的是,我的代码大约有500行长,但它肯定没有同名的全局变量。这就是为什么我对这件事感到如此困惑。如果发生这种情况,它通常会显示为一个警告,不是吗?让我用另一种方式再问一次:
BOOL boolcontentchange@界面的花括号内,从上面的代码片段中选择code>?像
@interface MyClass:SuperClass{BOOL boolContentChanged;/*其他ivar*/}/*方法*/@end
?嗨,肯,是的,它出现在“@interface SuspectsViewController:UIViewController{BOOL boolContentChanged;}”中,然后是“@property(非原子)BOOL boolContentChanged;”然后在.m中对其进行合成,并使用“boolContentChanged=true”进行如上所述的访问。没有其他引用,也没有其他同名变量。我有点困惑,我想我以前有过这个问题,但不记得为什么…Objective-C使用
YES
NO
布尔文本,而不是
true
false
。不确定这是否有用…您的.h文件中的代码段不明确。我怀疑您同时拥有一个实例变量(为您合成的)和一个具有相同名称的全局变量,并且您在不同的上下文中引用了一个不同的变量。请显示准确的代码。大家好,我以前的代码是bool=true,而不是bool,但在定义上应该没有任何区别,无论如何我都会尝试一下。不幸的是,我的代码大约有500行长,但它肯定没有同名的全局变量。这就是为什么我对这件事感到如此困惑。如果发生这种情况,它通常会显示为一个警告,不是吗?让我用另一种方式再问一次:
BOOL boolcontentchange@界面的花括号内,从上面的代码片段中选择code>?像
@interface MyClass:SuperClass{BOOL boolContentChanged;/*其他ivar*/}/*方法*/@e