2011-05-04 28 views
0

嗨,每一個我是法國人,如此scuse我的我的英語。那麼我想要做的是每一秒我都會在四種方法之間做一個隨機方法。我怎麼能這樣做?xcode做一個隨機的方法

回答

0

某處你需要啓動定時器

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

+0

好的,謝謝! – 2011-05-04 16:38:23

+0

好的,但我的方法使球動畫化,它們都與60fps的CadisplayLink處於同一個主循環中。 – 2011-05-04 16:47:21

+0

在某些時候,您需要學會自己解決問題。我給你提供了定時器代碼,隨機代碼和switch語句代碼。這就是你的問題所要求的。如果你有其他問題,把它們作爲一個不同的問題。 – coneybeare 2011-05-04 16:50:15

3

你想要一個1和4之間的隨機整數,然後case語句來執行相應的選擇器,對不對?

+0

的確是這樣,是一個用於此 – 2011-05-04 16:26:23

+0

INT randomNumber = 1+ arc4random()%的碼(4) ;獲得數[1,4] – 2011-05-04 16:30:11

+0

然後如何執行相應的選擇器? – 2011-05-04 16:33:32

1

4個字符串(您的方法的名稱)的數組,在0和3之間生成隨機int,然後使用NSSelectorFromString來調用。

+0

是否有這樣的代碼,因爲我真的不明白 – 2011-05-04 16:26:07

1

例如,你有四種方法:

//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. - (void)drink;
  3. - (void)run;
  4. - (void)sleep;
+0

,然後......沒有if(randomNumber = 1)或類似這樣的東西,調用方法附加到數字 – 2011-05-04 16:32:38

+0

@arvin Arabi 0對應到選擇器「吃」,1到「喝」等...... – johnoodles 2011-05-04 16:35:18

+0

他的回答是好的阿文,它確實隨機地調用其中一種方法。將其複製到XCode和Cmd並單擊這些方法以查看其文檔。 – Jano 2011-05-04 16:36:32

0

首先創建定時器:

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

}