Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Ios BOOL属性返回错误的BOOL结果_Ios_Objective C_Properties_Boolean_Lldb - Fatal编程技术网

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