使用@property时,布尔变量重置

时间:2014-04-13 08:05:05

标签: objective-c properties boolean

CLASS ONE.M

-(void)method{

    BOOL bVar;

    bVar = [UIScreen isRetinaDisplay]; //Custom Category Used Here

    NSLog(@"%d",bVar); //Value is 1

}

CLASS TWO.H

@implementation class_two : SKNode

@property (readonly)BOOL bVar;

@end

CLASS TWO.M

-(void)method{

    NSLog(@"%d",_bVar); //Value is 0

}

当我运行每个方法时,第一个类将bVar设置为1并打印结果,但是当在另一个类class_two中调用第二个方法时,从属性打印的值为0. / p>

什么是将bVar变量重置为0?

1 个答案:

答案 0 :(得分:1)

没有任何东西可以设定"返回"到了0.你只是处理两个完全不同的变量。在"第一类"中,您要设置一个名为bVar的局部变量(顺便说一下,一旦退出方法,立即丢弃该值)。在第二类中,您有一个名为bVar的类属性,该属性由实例变量_bVar支持。

因此,您的第二个示例是记录您似乎从未设置过的实例变量。如果你想要你的第一课"例如,实际更新"第二类"中的属性,然后您必须提供对第二类"的特定实例的引用。您要更新的bVar属性:

// ClassOne.m

- (void)updateBVarInObject:(ClassTwo *)obj
{
    obj.bVar = [UIScreen isRetinaDisplay]; //Custom Category Used Here

    NSLog(@"%d", obj.bVar); //Value is 1
}

我不知道与这两个类相关联的对象之间的关系,但希望这说明了这个想法,如果你想让某个类更新另一个类中的属性,它必须引用它其他对象。