xcode не сохранит int? - PullRequest
       30

xcode не сохранит int?

2 голосов
/ 16 июля 2011

Я знаю, что xcode не сохраняет int, но мой код, похоже, вообще не обновляет число из функции.

У меня есть в GameController.h

int charMainTouch;

и

@property (assign) int charMainTouch;

и в GameController.m:

-(void)awakeFromNib {
  charMainTouch=1;
  NSLog(@"%d",charMainTouch);
}

это сохраняет charMainTouch как 1 ok.Но когда я вызываю функцию из другого класса, она не будет хранить int

в GameController.m:

-(void) mainChar_touch:(int)touchTrue{ // when an class/object in touched

charMainTouch = touchTrue;//this is=2

NSLog(@"%d",charMainTouch);//this prints out 2

}

-(void) update:(CADisplayLink*)sender {
NSLog(@"%d",charMainTouch);//this still outputs 1 as if the "-(void) mainChar_touch:(int)touchTrue" had no effect on storing the int!

}

-(void)startGame {//this was already called

displayLink = [CADisplayLink displayLinkWithTarget:self selector:@ selector(update:)];
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}

Я не знаю, почему она не будет обновлять intиз этой функции!Я пробовал это:

 -(void) update:(CADisplayLink*)sender {
charMainTouch = charMainTouch+1;
NSLog(@"%d",charMainTouch);//works! prints out an increasing number

}

, но когда в любой момент вызывается "- (void) mainChar_touch: (int) touchTrue", это не влияет на int вообще ...!Есть идеи, почему?

Функция, вызываемая извне, все еще находится внутри класса, поэтому не должна ли она обновлять int?Я перепробовал все.

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Кажется, вы создаете совершенно новый игровой контроллер в своих прикосновениях Beg: withEvent: method.

И затем вы устанавливаете свойство для нового экземпляра игрового контроллера, а не для экземпляра, который у вас уже был.

0 голосов
/ 17 июля 2011

если вы создаете свойство и синтезируете его, вы, вероятно, захотите использовать сеттеры и геттеры, которые синтезируются, если у вас нет причин не делать этого. т.е.

[self setCharMainTouch:1]; 

или

self.charMainTouch=1;
...