gpt4 book ai didi

Objective-C ivar BOOL 不保值

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:12:53 24 4
gpt4 key购买 nike

编辑 - 对打字错误表示歉意,我当时很匆忙,因为我不得不离开大楼,但嗯......我想问一下,为什么投反对票?仅仅因为一些语法错误?我愿意接受批评,但请保持建设性?

感谢您的建设性回答,我都投了赞成票。

=============================================

我有一个 iVar BOOL,我想在整个类(class)中使用它。我试图将它初始化为YES,但我第一次读出它时,它是NO。这是为什么?这对我来说很奇怪,因为我的 int 都被保留了。

在我的 .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,但为什么这个 iVar 不保留它的值??

编辑

好吧,哇,这里真的有点乱...我试着用 @property 替换它,但它仍然无法正常工作。然后我尝试为变量 myBool “在项目中找到所有内容”,我不会在其他任何地方更改它

注意:我正在使用 cocos2d,但我认为这不会影响任何东西

最佳答案

我已经为您修复了 Objective-C 语法,一切都按预期工作

#import <Foundation/Foundation.h>

@interface MyClass : NSObject {
BOOL myBool;
int myInt;
}
-(void)addObjectsToGame;
@end

@implementation MyClass

-(id)init{
if (self = [super init])
{
myInt = 3;
myBool = YES; //here i set it
[self addObjectsToGame];
}
return self;
}

-(void)addObjectsToGame{
assert(myInt == 3);
assert(myBool);
NSLog(@"OK");
}

@end


int main(int argc, char *argv[]) {
@autoreleasepool {
[MyClass new];
}
}

关于Objective-C ivar BOOL 不保值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com