gpt4 book ai didi

iphone - 没有AfterDelay的时间后,我该如何执行selector? (里面的代码)

转载 作者:行者123 更新时间:2023-12-01 19:26:15 24 4
gpt4 key购买 nike

首先,感谢您提出我的问题。
现在,我尝试了很多不同的方法来在代码中调用某些函数,但是我发现它起作用的方法(performselector:withobject:afterdelay)立即进入函数中,并且我需要该函数在随机时间后做出一些“if” 。
好吧,您可以在这里看到代码-

-(void)playGame{
isButtonPressed=NO;

int minimum=1;
int maximum=4;
int randomTime=(arc4random()%(maximum-minimum))+minimum;
[self performSelector:@selector(ifButtonNotPressed) withObject:nil afterDelay:randomTime];
}

-(void)closingAction{
NSLog(@"Closing Panel automatic");
if (randomFrog==1){
[self performSelector:@selector(animatePanelCloseAction::) withObject:gameImage1_up withObject:gameImage1_down];
}
[self performSelector:@selector(playGame) withObject:nil afterDelay:0.25];
}


-(IBAction)buttonAction:(id)sender{

if (sender == gameButton1 && randomFrog==1){
[self performSelector:@selector(disableAllButtons)];
score=score+1;
isButtonPressed=YES;
[scoreLabel setText:[NSString stringWithFormat:@"Score:%d",score]];
[self performSelector:@selector(closingAction)];
}
}

-(void)ifButtonNotPressed{
if (isButtonPressed==NO){
[self performSelector:@selector(closingAction)];
}
}

如您所见,即时通讯试图检查按钮是否被按下,但是它在里面并立即进行检查,并在延迟后执行。

真正延迟后我怎么称呼它!

谢谢你们。
阿米尔。

最佳答案

尝试使用NSTimer修复此问题。

if(callTimer)
{
[callTimer invalidate];
callTimer=nil;
}
callTimer=[NSTimer scheduledTimerWithTimeInterval:0.50 target:self selector:@selector(callFunction) userInfo:nil repeats:NO];

借助于此,您可以在特定时间间隔调用任何函数。如果再次调用函数,则它将使当前计时器无效并为此创建新计时器。

调用函数后不要忘记使定时器无效,这意味着使特定功能的定时器无效。

关于iphone - 没有AfterDelay的时间后,我该如何执行selector? (里面的代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com