菜鸟教程小白 发表于 2022-12-12 12:55:23

ios - NSTimer initWithFireDate 无法正常工作


                                            <p><p>当启用 wifi 时,我使用 <code>NSTimer</code> 在后台定期下载数据。
但是,也可以选择按下手动下载数据的按钮。因此,可以启用和禁用自动更新程序。
当通过禁用自动更新“中断”一个周期时,我想在启用它的时间点之后该周期的剩余时间结束时安排下一次更新。
因为 NSTimer 没有 pause 方法,所以我使用 NSTimer 的 initWithFireDate 方法。</p>

<pre><code>timer = [ initWithFireDate:fireDate interval:updateFrequency target:self selector:@selector(timerTick:) userInfo:nil repeats:YES];
[ addTimer:timer forMode:NSRunLoopCommonModes];
</code></pre>

<p><code>fireDate</code> 肯定在给定日期之后:</p>

<pre><code>NSDate *fireDate = ;
</code></pre>

<p>尽管如此,定时器是在定时器初始化之后调度的。我正在禁用计时器并通过以下方式计算剩余时间:</p>

<pre><code>NSDate *lastFireDate = ;
NSDate *current = ;
;
double timeSinceLastFire = ;
remainingWaitingTime = updateFrequency - timeSinceLastFire;
</code></pre>

<p>计算的时间 (remainingWaitingTime) 具有正确的值。 </p>

<p>我做错了什么?</p>

<p>最好的问候,
费边</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您必须通过执行以下操作将计时器添加到运行循环:</p>

<pre><code>[ addTimer: timer forMode: NSDefaultRunLoopMode];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSTimer initWithFireDate 无法正常工作,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17861852/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17861852/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSTimer initWithFireDate 无法正常工作