-(void)method{
BOOL bVar;
bVar = [UIScreen isRetinaDisplay]; //Custom Category Used Here
NSLog(@"%d",bVar); //Value is 1
}
@implementation class_two : SKNode
@property (readonly)BOOL bVar;
@end
-(void)method{
NSLog(@"%d",_bVar); //Value is 0
}
当我运行每个方法时,第一个类设置bVar
为1并打印结果,但是当在另一个类中调用第二个方法时,class_two
从属性打印的值为0。
什么将bVar
变量重置为0?
没有任何事情可以将“ back”设置为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
}
我不知道与这两个类关联的对象之间的关系,但是希望这可以说明这一想法,即如果您希望某个类更新另一个类中的属性,则它必须具有对该另一个对象的引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句