【发布时间】:2010-12-28 15:40:24
【问题描述】:
这是我的代码:
@interface Game : Layer // this is from cocos2d
{
int maxSprites;
}
@implementation Game
-(void)initVariables
{
maxSprites = 18;
}
稍后,当我打印出来时,
NSLog(@" maxSprites = %d ", maxSprites);
我明白了:
maxSprites = 2
以及要求它为 18 的操作,崩溃或不起作用,就好像它现在真的只有 2。
这怎么可能? =)
APPLE + SHIFT + F 没有显示maxSprites 变量的其他用法。
我查看了其他代码示例,他们经常使用 getter 和 setter 公开变量,而且他们也使用 @property。我错过了什么吗?我是 Objective-C 的新手,所以我可能只是!
编辑: hrmph,为什么我得到一个-1?
谢谢,我会努力学习如何做一个观察点。
在那之前,我想说的是,我在 Project, Textual, Contains , 忽略大小写,只导致:
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);
第二次编辑:
我使用观察点找到了它更改的位置。它在这里改变:
Expression: “*(int *) 67379960”
New Value: 2
Old Value: 18
在这一行:
[self checkMatchBarAward:spriteTypeToAdd];
奇怪?该函数对maxSprites 没有任何作用。
编辑: -我现在要提出一个新问题,以找出为什么值会自行改变。谢谢你们的帮助,干得好。
【问题讨论】:
-
我们可以看看那个方法(或者它的一些简化版本,仍然会产生同样的错误)吗?
-
您好 Chuck,我想给 NSD 一个“答案”,并用绿色标记了他。我在这里的另一个线程中继续这个问题:stackoverflow.com/questions/1941686/…
-
因为他满足了最初的问题:“你如何声明和保留一个 int?”
标签: objective-c int