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(@"Working");
}
</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]