Ios BOOL属性返回错误的BOOL结果
一个Ios BOOL属性返回错误的BOOL结果,ios,objective-c,properties,boolean,lldb,Ios,Objective C,Properties,Boolean,Lldb,一个BOOL属性返回NO,尽管它的支持iVar说它是Yes 问题 我有一个带有BOOL属性的类PFIBinaryPointView: @property (nonatomic, getter=isGlowing) BOOL glowing; 我正在用猕猴桃测试另一个类sut。此类的一部分是一个方法numberToDisplay:,用于设置或取消设置发光属性 context(@"when numberToDisplay is called", ^{ __block PFIBinaryPo
BOOL
属性返回NO
,尽管它的支持iVar说它是Yes
问题
我有一个带有BOOL
属性的类PFIBinaryPointView
:
@property (nonatomic, getter=isGlowing) BOOL glowing;
我正在用猕猴桃测试另一个类sut
。此类的一部分是一个方法numberToDisplay:
,用于设置或取消设置发光属性
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
我所尝试的:
- 起初我认为这是一个猕猴桃问题,但后来我尝试插入一个助手布尔
BOOL test=point.isGlowing代码>但是测试
也一直是否
李>
- 我尝试用NSLog语句记录它,以查看是否存在任何差异->始终
No
或0
- 我仔细检查了
PFIBinaryPointView
类中是否有iVar的隐式声明。但是我使用默认的getter和setter,并且在任何地方都没有@synthesis
- 我试图重新命名这个财产。在它被称为
isActive
之前
- 我为这个洞项目做了一次大扫除
- 我多次重新启动Xcode
因此,如果有人可以向我解释这种奇怪的行为,请这样做,或者最好告诉我如何说服属性返回正确的结果。请尝试帧变量点。\u glowing并查看它报告了什么
如果它对你撒谎,那么是时候进行错误报告了
如果它说的是对的,试着右键点击发光的iVar,编辑它的摘要。我怀疑结果窗口中会显示“是”。我在一些第三方代码中遇到了这个问题。看起来bool没有在任何地方初始化,xcode假设它是真的,而实际上它是自动初始化为false的!(无论如何,初始化bool解决了我的问题)。苹果杂志上的另一个成功案例是“有用的”自动生成合成功能。人们什么时候会意识到显式可能需要按键,但至少他们知道发生了什么……只要删除getter=isGlowing
,我希望它会起作用。或者,您可以将@synthesis glowing=\u glowing
添加到@implementation。(就我个人而言,我从不使用getter=,我看不出有什么意义)@特洛伊敌人,你能解释一下这个问题吗?Pfitz,你能在一段较小的、自包含的代码上重现这个问题吗?如果实例变量_在调试器控制台或NSLog中发光,你是否尝试过打印该值?有时,“调试器变量”视图只显示错误的数据。@zoul Xcode中经常出现有关变量窗格的问题。(lldb)控制台可能更准确。我会尝试$(lldb)p(int)point.isGlowing