【发布时间】:2011-05-04 16:12:29
【问题描述】:
大家好,我是法国人,所以请原谅我的英语。那么我想做的是每一秒我在四种方法之间做一个随机方法。请问我该怎么做?
【问题讨论】:
标签: iphone xcode animation random methods
大家好,我是法国人,所以请原谅我的英语。那么我想做的是每一秒我在四种方法之间做一个随机方法。请问我该怎么做?
【问题讨论】:
标签: iphone xcode animation random methods
你想要一个 1 到 4 之间的随机整数,然后是一个 case 语句来执行相应的选择器,对吧?
【讨论】:
4 个字符串的数组(方法的名称),生成 0 到 3 之间的随机 int 然后使用 NSSelectorFromString 调用。
【讨论】:
例如你有四种方法:
//put them on array as strings
NSArray *arrayOfSelectors = [NSArray arrayWithObjects:@"eat", @"drink", @"run", @"sleep", nil];
//generate a random number based on the number of selectors inside the array
int randomNumber = arc4random()%arrayOfSelectors.count;
//call the method
//assumes that someObject really implement the methods inside the array, else your app will crash
[someObject performSelector:NSSelectorFromString([arrayOfSelectors objectAtIndex:randomNumber])];
【讨论】:
你需要启动计时器的地方
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(randomMethod:) userInfo:nil repeats:YES];
然后实现将要调用的方法:
-(void)randomMethod:(NSTimer *)timer {
if (shouldStop) {
[timer invalidate];
return;
}
int rand = arc4random() % 4;
switch (rand) {
case 0:
[self method0];
break;
case 1:
[self method1];
break;
case 2:
[self method2];
break;
case 3:
[self method3];
break;
}
}
稍后,如果您想停止它,请将 shouldStop 设置为 true。
【讨论】:
首先创建计时器:
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 1.0
target: self
selector:@selector(selectorSwitcher:)
userInfo: nil repeats:YES];
NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:t forMode: NSDefaultRunLoopMode];
然后实现切换器:
-(void)selectorSwitcher:(NSTimer *)timer {
int randomNumber = 1+ arc4random() %(4);
switch (randomNumber) {
case 1:
[self selector1];
break;
case 2:
[self selector2];
break;
case 3:
[self selector3];
break;
case 4:
[self selector4];
break;
default:
break;
}
}
【讨论】: