【发布时间】:2012-04-10 09:54:04
【问题描述】:
我正在尝试在 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>
$表示它指向某个地址,还是纯粹为了调试参考?
另外,这有什么理由会为零吗?如果是bool而不是指针,肯定不需要隐式设置吧?
对此的任何建议都非常感谢,因为我无法解决, 提前致谢, 艾略特
【问题讨论】:
-
Objective-C 使用
YES和NO布尔文字,而不是true和false。不确定这会有所帮助... -
.h 文件中的 sn-p 不明确。我怀疑您同时拥有一个实例变量(为您合成)和一个具有相同名称的全局变量,并且您在不同的上下文中引用了不同的变量。请显示确切的代码。
-
大家好,我曾经将它作为 bool = true,而不是 BOOL,但在定义方面确实不应该有任何区别,无论如何都会试一试。不幸的是,我的代码大约有 500 行长,但它绝对没有同名的全局变量。这就是为什么我对这件事感到如此困惑。如果发生这种情况,它通常会显示为警告,不是吗?
-
让我以不同的方式重新问:您上面的 sn-p 中的
BOOL boolContentChanged;是否在您的@interface的花括号内?喜欢@interface MyClass : SuperClass { BOOL boolContentChanged; /* other ivars */ } /* methods */ @end? -
嗨 Ken,是的,它出现在 '@interface SuspectsViewController : UIViewController { BOOL boolContentChanged;}' 然后 '@property (nonatomic) BOOL boolContentChanged;'然后在 .m 中合成它,并使用 'boolContentChanged = true' 像上面提到的那样进行访问。没有其他对它的引用,也没有其他同名变量。我有点困惑,我想我以前遇到过这个问题,但不记得为什么......
标签: objective-c xcode debugging initialization boolean