我尝试生成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];如果我在ViewDidLoad中NSLog我的zufallsZahlen NSArray,我会得到我想要的输出:
(
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);
}如果我在onTimer函数中记录数组的Nslog,我会得到一个愚蠢的输出:
Japanese.lproj编辑:
在viewDidLoad中,只需保留NSArray:
zufallsZahlen = [self generateNumbers];
[zufallsZahlen retain];发布于 2010-08-12 10:47:12
你没有保留数组。请记住,像NSSet sortedArrayUsingSelector这样的方法会返回一个自动释放的数组。
希望这能有所帮助。
发布于 2010-08-12 10:31:18
您可以在计时器中传入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
}https://stackoverflow.com/questions/3464354
复制相似问题