• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 无效和创建 NSTimer

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:17:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

每当我完成我的 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap