xcode делает случайный метод - PullRequest
0 голосов
/ 04 мая 2011

Привет всем, я француженка, так что позовите меня за мой английский. Ну, я хочу, чтобы каждую секунду я делал случайный метод между четырьмя методами. как я могу это сделать, пожалуйста?

Ответы [ 5 ]

3 голосов
/ 04 мая 2011

Требуется случайное целое число от 1 до 4, а затем оператор case для выполнения соответствующих селекторов, верно?

1 голос
/ 04 мая 2011

Например, у вас есть четыре метода:

//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])];
  1. - (Недействительными) есть;
  2. - (Недействительными) пить;
  3. - (Недействительными) работать;
  4. - (Недействительными) сон;
1 голос
/ 04 мая 2011

массив из 4 строк (имена ваших методов), генерирует случайное int между 0 и 3, затем использует NSSelectorFromString для вызова.

0 голосов
/ 04 мая 2011

Сначала создайте таймер:

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;
    }

}
0 голосов
/ 04 мая 2011

Где-то нужно запустить таймер

[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.

...