0

我想从方法“method1”调用另一个方法“method2”。问题是“method1”上有一个 CADisplayLink,当我想从“method1”调用“method2”时,它以 6Ofps 的速度调用它,因此每秒调用 60 次,但我只想让它调用一次。我知道我必须使用 BOOL 变量,但我不知道如何使用它们。谁能帮我 ?对不起我的英语我是法国人:/

//编辑:方法1上有一个CADisplayLink:

-(void)method1{
if(
if ( leScore % 20000 == 0) {
[self method2];

}

-(void)method2{

etatJeu = arc4random() / (UINT_MAX/3);

switch(etatJeu) {
    case 0: /* top */
        etatJeu=kEtatJeu2;
        break;
    case 1: /* bottom */
        etatJeu=kEtatJeu3;              
        break;
    case 2: /* bottom */
        etatJeu=kEtatJeu4;              
        break;
    default:
        break;


}

所以每次'leScore % 20000 == 0'调用一次方法2。

4

2 回答 2

1

如果您想让方法调用只发生一次,请以这种方式使用 bool:

@interface SomeClass {
    BOOL method2RunFlag; // set to NO in init
}
@end

// ... in your method1

if( method2RunFlag == NO ) {
    // call your method2
    method2RunFlag = YES;
}

根据您上面编辑的代码:

-(void)method1{
if( method2RunFlag == NO ) {
method2RunFlag = YES;
  if ( leScore % 20000 == 0) {
    [self method2];
  }
    // wait 1 second before able to call again
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(resetMethod2RunFlag:) userInfo:nil repeats:NO];
}
- (void)resetMethod2RunFlag:(NSTimer *)timer {
  method2RunFlag = NO;
}

仍然不完全确定你在追求什么,但这是我最好的猜测。=)

于 2011-11-11T20:21:18.150 回答
0

您可能想要创建方法 1 的 2 个变体,一个用于 CADisplayLink,另一个用于其他地方,可能调用辅助方法 1A 中的所有公共代码,但带有一个标志参数,说明是否调用方法 2。

于 2011-11-11T21:45:49.453 回答