gpt4 book ai didi

ios - 如果他们过去调用并且会延迟显示数据,如何在 iOS 中退出循环的 NSTimer?

转载 作者:行者123 更新时间:2023-11-28 22:17:24 24 4
gpt4 key购买 nike

我想退出 for 循环或者想给 NSTimerIntervalvalue: 0.0 ,我知道这是可能的

有人会说

[time invalidate];
timer = nil;

但让我用代码解释一下我想做什么以及我的确切问题是什么?

这是我的代码:

 -(void)loop{
For(int i = 0 , i<=10, i++){
timer_readtext2 = [NSTimer scheduledTimerWithTimeInterval:i*0.4574 invocation:invocation repeats:NO];
}

-(void)SomemethodwhichTimerIsCalling_i_Times{ // Assume calling invocation:invocation method
NSLog(@"i is: %d, i");
}

在这种情况下 [time invalidate];timer = nil; 不工作,因为方法被调用并且循环已经运行并且它在某个时间打印 i延迟时间。

我只想在单击按钮时停止打印 i,这意味着循环将中断或退出/计时器将停止/暂停。它将退出方法 -(void)SomemethodwhichTimerIsCalling_i_Times()

我无法在单击按钮时停止循环或停止计时器我做了一些实验并成功了但是当我再次单击方法 -(void)loop() 时它将再次调用旧值和新值。

我们非常欢迎任何想法或建议。

最佳答案

实际上只是通过调用来停止定时器调用方法。

[timer_readtext2 invalidate];

但是这个循环方法应该是..

-(void)loop{
//for(int i = 0 , i<=10, i++)// No need
timer_readtext2 = [NSTimer scheduledTimerWithTimeInterval:i*0.4574 invocation:invocation repeats:YES];
}

当您创建为 NSTimer 时,它将开始定期调用该方法。所以你必须在特定时间通过invalidate停止。

更新:

-(void)SomemethodwhichTimerIsCalling_i_Times{ // Assume calling invocation:invocation method

self.count +=1;
NSLog(@"i is: %d, i",self.count);
if (self.count > 10)
[timer_readtext2 invalidate]
}

关于ios - 如果他们过去调用并且会延迟显示数据,如何在 iOS 中退出循环的 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308177/

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