我想从方法'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。
答案 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。