【发布时间】:2012-11-21 03:08:47
【问题描述】:
编辑 - 为错字道歉,我很着急,因为我不得不离开大楼,但是嗯......我可以问一下,为什么不赞成?仅仅因为一些语法错误?我愿意接受批评,但请保持建设性?
感谢建设性的回答,我都投了赞成票。
==============================================
我有一个 iVar BOOL,我想在整个课程中使用它。我试图将它初始化为YES,但我第一次读出来时,它是NO。这是为什么?这对我来说很奇怪,因为我的ints 都被保留了。
在我的 .mm 文件中,我有这样的内容:
@interface MyClass : NSObject {
BOOL myBool;
int myInt;
}
@end
@implementation MyClass
-(id)init{
//...
myInt = 3;
myBool = YES; //here i set it
//...
[self addObjectsToGame];
//...
}
-(void)addObjectsToGame{
//...
assert(myInt == 3);
assert(myBool); // <---- this line would fail
//...
}
@end
我知道我可以将@property 与assign 一起使用,但为什么这个iVar 不能保留它的价值??
编辑
好的,是的,哇,这里真的有些乱了...我试图用@property 替换它,但它仍然无法正常工作。然后我尝试为变量myBool“在项目中查找所有内容”,我不会在其他任何地方更改它
注意:我正在使用 cocos2d,但我认为这不会影响任何事情
【问题讨论】:
-
您确定在
@implementation之前没有错过第二个@end? -
我不认识声明
addObjectsToGame的语法,方法名称后面有括号。而且您不会以[self addObjectsToGame]的形式调用它。显然这不是标准的 Objective-C 文件。这是 Objective-C++ 吗? -
你能给我们真正的代码吗?
-(void)addObjectsToGame()无效 obj-c -
啊。你是对的,它不是 Objective-C 代码,我只是在编辑器中输入它,因为真正的代码真的很长。但这就是我所做的-我尝试对变量“myBool”使用XCode的“在项目中查找所有内容”,并且只有1个实例我正在积极更改它的值-在
init....和当我在init之后转到NSLog("%@",myBool?@"true":@"false");时,输出会给我false...这就是我如此困惑的原因
标签: objective-c ios variables