OStack程序员社区-中国程序员成长平台

标题: ios - 无效和创建 NSTimer [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 01:17
标题: ios - 无效和创建 NSTimer

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

我的代码是这样的:

-(void) fireTimer{
    NSString *textValue = [sliderLabel text];
    float value = [textValue floatValue];

    [NSTimer scheduledTimerWithTimeInterval:value target:self selectorselector(vibrate userInfo:nil repeats:YES];

}

- (void) vibrateNSTimer*)timer {
    if(_offButton.selected){
        [timer invalidate];
        timer=nil;
    }

    NSLog(@"Working");


}



Best Answer-推荐答案


  1. 直接从 UITextField 获取值并没有遵循 MVC 设计模式。这些值应该存储在模型对象中,并使用 MVC 模式将任何新值从文本字段中获取到模型中。您当前的实现非常微妙,将在微风中打破。它还要求这段代码能够访问 UI 元素,这是非常不灵活的;最好让它只访问模型对象。

  2. NSTimer * 存储为实例变量,并注意如果您使用 ARC,则 NSTimer 保留目标 (!!) 所以让这个实例变量 __weak 打破保留循环。

  3. 如果你想让你的计时器重复,那么根本不需要重置它;仅当用户更改时间时才需要这样做(参见第 1 点!)。

  4. if (button_selected) do_vibrate; 代码移到 timer failed 方法中。

关于ios - 无效和创建 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041424/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4