BOOL 属性返回错误的 BOOL 结果
Posted
技术标签:
【中文标题】BOOL 属性返回错误的 BOOL 结果【英文标题】:BOOL Property is returning wrong BOOL result 【发布时间】:2013-11-11 02:37:43 【问题描述】:BOOL
属性返回 NO
,尽管它的支持 iVar 说它是 Yes
。
问题
我有一个带有BOOL
属性的PFIBinaryPointView
类:
@property (nonatomic, getter=isGlowing) BOOL glowing;
我正在使用 Kiwi 测试另一个类 sut
。这个类的一部分是一个方法numberToDisplay:
来设置或取消设置glowing
属性。
context(@"when numberToDisplay is called", ^
__block PFIBinaryPointView *point;
it(@"should activate the correct points for the number 1", ^
[sut numberToDisplay:1];
point = [sut.binaryPoints objectAtIndex:0];
[[theValue([point isGlowing]) should] equal:theValue(YES)];
);
);
但是isGlowing
总是返回一个NO
,尽管它的烘焙iVar 说它是(应该是)YES
我尝试过的:
起初我以为这是 Kiwi 问题,但后来我测试插入了一个帮助器 BOOLBOOL test = point.isGlowing;
但test
也一直是NO
。
我尝试使用 NSLog 语句记录它以查看是否存在任何差异 -> 始终为 No
或 0。
我仔细检查了PFIBinaryPointView
类是否有任何隐含的 iVar 声明。但我使用默认的 getter 和 setter,也没有 @synthesize
。
我试图重命名该属性。之前叫isActive
。
我为孔项目做了清理工作。
我多次重启 Xcode。
因此,如果有人可以向我解释这种奇怪的行为,请这样做或更好地告诉我如何说服酒店返回正确的结果。
【问题讨论】:
Apple 的“有用的”自动生成综合功能期刊中的另一个成功案例。人们什么时候会意识到明确可能会花费按键,但至少他们知道发生了什么...... 只需删除getter=isGlowing
,我希望它会起作用。或者,您可以将@synthesize glowing = _glowing
添加到您的@implementation。 (就我个人而言,我从不使用 getter=,我不明白这一点)
@***foe,你能解释一下这个问题吗? Pfitz,你能在一段更小的、独立的代码上重现这个问题吗?
如果实例变量 _glowing 在调试器控制台或使用 NSLog,您是否尝试过打印该值?有时调试器变量视图只是显示错误的数据。
@zoul Xcode 中经常有关于变量窗格的问题。 (lldb) 控制台可能更准确。我会尝试$ (lldb) p (int) point.isGlowing
【参考方案1】:
能否请您尝试帧变量 point._glowing 并查看它报告的内容?
如果它对你说谎,那么是时候报告错误了
如果显示正确,请尝试右键单击 _glowing iVar,然后编辑其摘要。我怀疑结果窗口中会显示“是”。
【讨论】:
【参考方案2】:我在一些第 3 方代码中遇到了这个问题。看起来 bool 没有在任何地方初始化,当它实际自动初始化为 false 时,xcode 假定它是 true ! (无论如何.. 初始化 bool 解决了我的问题)。
【讨论】:
以上是关于BOOL 属性返回错误的 BOOL 结果的主要内容,如果未能解决你的问题,请参考以下文章
尝试更改 Bool 属性时出现 EXC_BAD_ACCESS 错误