Вот мой код:
@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, так что я мог бы просто быть!
EDIT:
хммм, почему я получил -1?
Спасибо, я постараюсь узнать, как создать точку наблюдения.
До этого я хотел бы сказать, что я сделал APPLE + SHIFT + F для maxSprites "В проекте, текстовый, содержит, игнорировать регистр и только в результате:
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);
2-е РЕДАКТИРОВАНИЕ:
Я нашел место, где оно меняется, используя точку наблюдения. Здесь меняется:
Expression: “*(int *) 67379960”
New Value: 2
Old Value: 18
На этой строке:
[self checkMatchBarAward:spriteTypeToAdd];
Странно? Эта функция ничего не делает с maxSprites
.
EDIT:
-Я собираюсь задать новый вопрос сейчас, чтобы выяснить, почему ценность меняется сама по себе. Спасибо за вашу помощь, ребята, отличная работа.
Новый пост будет рассмотрен здесь:
Objective-C: изменение значения int без причины