从另一个有CADisplayLink的方法调用一次方法

时间:2011-11-11 20:16:04

标签: iphone xcode frame boolean cadisplaylink

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

//编辑: method1上有一个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。

2 个答案:

答案 0 :(得分: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;
}

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

答案 1 :(得分:0)

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