NSArray Проблема - PullRequest
       2

NSArray Проблема

0 голосов
/ 12 августа 2010

Я пытаюсь сгенерировать 6 случайных чисел и поместить их в глобальный NSArray, вот что я сделал:

в MainViewController.h

NSArray * zufallsZahlen;

У меня есть функция для генерации чисел:

- (NSArray *)generateNumbers {
  NSMutableSet *s = [NSMutableSet set];
  while([s count] < 6) {
    NSNumber *z = [NSNumber numberWithUnsignedInteger:arc4random() % 46];
    if(![s containsObject:z]) 
    [s addObject:z];
  }
NSArray *zahlen = [[s allObjects] sortedArrayUsingSelector:@selector(compare:)];

return zahlen;
}

Теперь в ViewDidLoad:

zufallsZahlen = [self generateNumbers];
[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];

Если я NSLog мой zufallsZahlen NSArray в ViewDidLoad, я получаю вывод, который я хочу:

(
2,
8,
13,
16,
27,
31
)

Функция onTimer каждые 0,2 секунды создает шар с фактическим номером:

-(void)onTimer:(NSTimer*)timer {
if (indexBall > 6){
    //some function
}
else {
    [self crateBall:[zufallsZahlen objectAtIndex:indexBall] ballId:indexBall ballX:xCoord ballY:100];
    [self rollBall:indexBall rollToY: 80];
    indexBall+=1;
    xCoord-=40;

    NSLog(@"%@", zufallsZahlen);
}

И если я Nslog Array в функции onTimer, я получаю дурацкий вывод:

Japanese.lproj

РЕДАКТИРОВАТЬ:

в viewDidLoad просто сохраните NSArray:

zufallsZahlen = [self generateNumbers];
[zufallsZahlen retain];

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Вы не сохранили массив.Помните, что такие методы, как [NSSet sortedArrayUsingSelector:] возвращают автоматически освобожденный массив.

Надеюсь, это поможет.

1 голос
/ 12 августа 2010

Вы можете передать zufallsZahlen в таймере:

zufallsZahlen = [self generateNumbers];
[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(onTimer:) userInfo:zufallsZahlen repeats:YES];

- (void) onTimer:NSArray *zufallsZahlen {
    // Do something with zufallsZahlen
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...