2010-08-12 70 views
0

我嘗試生成6張隨機數,並把它們在全球的NSArray,這就是我做了什麼: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]; 

如果我在viewDidLoad中的NSLog我zufallsZahlen的NSArray我得到的輸出,我想:

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

計時器觸發函數創建每隔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在計時器觸發功能的陣列我得到的嘴硬輸出:

Japanese.lproj 

編輯:

在viewDidLoad中簡單地保留的NSArray:

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

回答

2

你沒保留陣列。記住像[NSSet sortedArrayUsingSelector:]這樣的方法會返回一個自動釋放的數組。

希望有所幫助。

+0

非常感謝您爲我工作:D – Mario 2010-08-12 02:57:54

1

您可以在計時器通過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 
}