这是我的代码:
@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值无变化
| 归档时间: |
|
| 查看次数: |
7586 次 |
| 最近记录: |