菜鸟教程小白 发表于 2022-12-13 01:17:48

ios - 无效和创建 NSTimer


                                            <p><p>每当我完成我的 NSTimer 时,我想使其无效并创建一个新间隔,但它会保留旧间隔和新间隔。单击 offButton 后,我想使 NSTimes 无效。计时器停止打印“Working”,但是当我以不同的间隔调用我的方法时,它会为两个间隔打印“Working”。</p>

<p>我的代码是这样的:</p>

<pre><code>-(void) fireTimer{
    NSString *textValue = ;
    float value = ;

    ;

}

- (void) vibrate:(NSTimer*)timer {
    if(_offButton.selected){
      ;
      timer=nil;
    }

    NSLog(@&#34;Working&#34;);


}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><ol>
<li><p>直接从 <code>UITextField</code> 获取值并没有遵循 MVC 设计模式。这些值应该存储在模型对象中,并使用 MVC 模式将任何新值从文本字段中获取到模型中。您当前的实现非常微妙,将在微风中打破。它还要求这段代码能够访问 UI 元素,这是非常不灵活的;最好让它只访问模型对象。</p></li>
<li><p>将 <code>NSTimer *</code> 存储为实例变量,并注意如果您使用 ARC,则 <code>NSTimer</code> <strong>保留目标</strong> (!!) 所以让这个实例变量 <code>__weak</code> 打破保留循环。</p></li>
<li><p>如果你想让你的计时器重复,那么根本不需要重置它;仅当用户更改时间时才需要这样做(参见第 1 点!)。</p></li>
<li><p>将 <code>if (button_selected) do_vibrate;</code> 代码移到 <em>timer failed</em> 方法中。</p></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无效和创建 NSTimer,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15041424/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15041424/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无效和创建 NSTimer