Objective-C:你如何声明和保留int?

Jer*_*iah 0 int objective-c

这是我的代码:

@interface Game : Layer // this is from cocos2d
{
   int maxSprites;
}

@implementation Game
-(void)initVariables
{
  maxSprites = 18;
}
Run Code Online (Sandbox Code Playgroud)

后来,当我打印出来时,

 NSLog(@" maxSprites = %d  ", maxSprites);
Run Code Online (Sandbox Code Playgroud)

我明白了:

 maxSprites = 2
Run Code Online (Sandbox Code Playgroud)

并且操作要求它为18,崩溃或不起作用,就好像它现在真的只有2.

怎么可能呢?=)

APPLE+ SHIFT+ F显示maxSprites变量没有其他用法.

我查看了其他代码示例,并且经常使用getter和setter公开变量,并且他们也在使用@property.我错过了什么吗?我是Objective-C的新手,所以我不妨这样做!

编辑:hrmph,为什么我得到-1?

谢谢,我将尝试学习如何做一个观察点.

在那之前,我想说我为maxSprites 做了一个APPLE+ SHIFT+ F"在Project,Textual,Contains,Ignore Case中,结果只是:

Game.h:     int maxSprites;
Game.m:     maxSprites = 18;
Game.m:     NSLog(@" maxSprites  = %d", maxSprites);
Game.m:     NSLog(@" maxSprites  = %d", maxSprites);
Game.m:     NSLog(@"maxSprites is at %p", &maxSprites);
Game.m:     NSLog(@"maxSprites is at %p", &maxSprites);
Game.m:     NSLog(@" maxSprites  = %d", maxSprites);
Game.m:     NSLog(@" maxSprites  = %d", maxSprites);
Game.m:     NSLog(@"maxSprites is at %p", &maxSprites);
Game.m:     NSLog(@"maxSprites is at %p", &maxSprites);
Run Code Online (Sandbox Code Playgroud)

第二次编辑:

我使用观察点找到了它发生变化的位置.它在这里改变:

Expression: “*(int *) 67379960”
New Value: 2
Old  Value: 18
Run Code Online (Sandbox Code Playgroud)

在这一行:

[self checkMatchBarAward:spriteTypeToAdd];
Run Code Online (Sandbox Code Playgroud)

奇?该功能不起作用maxSprites.

编辑: - 我现在要提出一个新问题,找出价值自身变化的原因.谢谢你的帮助,干得好.

新帖子将在这里采用: Objective-C:int值无变化

Aze*_*utt 6

您不保留int,因为它不是对象.使用观察点并找出变量何时发生变化.