【发布时间】: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 问题,但后来我测试插入了一个帮助器 BOOL
BOOL test = point.isGlowing;但test也一直是NO。 - 我尝试使用 NSLog 语句记录它以查看是否存在任何差异 -> 始终为
No或 0。 - 我仔细检查了
PFIBinaryPointView类是否有任何隐含的 iVar 声明。但我使用默认的 getter 和 setter,也没有@synthesize。 - 我试图重命名该属性。之前叫
isActive。 - 我为孔项目做了清理工作。
- 我多次重启 Xcode。
因此,如果有人可以向我解释这种奇怪的行为,请这样做或更好地告诉我如何说服酒店返回正确的结果。
【问题讨论】:
-
Apple 的“有用的”自动生成综合功能期刊中的另一个成功案例。人们什么时候会意识到明确可能会花费按键,但至少他们知道发生了什么......
-
只需删除
getter=isGlowing,我希望它会起作用。或者,您可以将@synthesize glowing = _glowing添加到您的@implementation。 (就我个人而言,我从不使用 getter=,我不明白这一点) -
@trojanfoe,你能解释一下这个问题吗? Pfitz,你能在一段更小的、独立的代码上重现这个问题吗?
-
如果实例变量 _glowing 在调试器控制台或使用 NSLog,您是否尝试过打印该值?有时调试器变量视图只是显示错误的数据。
-
@zoul Xcode 中经常有关于变量窗格的问题。 (lldb) 控制台可能更准确。我会尝试
$ (lldb) p (int) point.isGlowing
标签: ios objective-c properties boolean lldb