首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从计时器停止NSRunLoop

从计时器停止NSRunLoop,可以通过以下方法实现:

  1. 使用NSTimer创建计时器,并将其添加到NSRunLoop中。
代码语言:swift
复制
let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
  1. 在需要停止NSRunLoop时,调用NSTimer的invalidate()方法。
代码语言:swift
复制
timer.invalidate()
  1. 如果需要在特定的时间间隔后停止NSRunLoop,可以使用dispatch_after()函数。
代码语言:swift
复制
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    timer.invalidate()
}
  1. 如果需要在特定的时间点停止NSRunLoop,可以使用NSTimer的userInfo属性来存储停止时间。
代码语言:swift
复制
let stopTime = NSDate(timeIntervalSinceNow: 5.0)
let timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(timerFired), userInfo: stopTime, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)

func timerFired(timer: NSTimer) {
    let stopTime = timer.userInfo as! NSDate
    if NSDate().compare(stopTime) == .OrderedDescending {
        timer.invalidate()
    }
}

以上是一些常见的方法来停止NSRunLoop,具体实现方式可能会因应用场景而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个创建自定义事件源的例子

当需要时,你可以 NSRunLoop 对象获取一个 CFRunLoopRef 不透明类型指针。...你可以添加和删除输入源和计时器,但停止 RunLoop 的唯一方法是杀死它。也没办法在自定义模式下运行 RunLoop 。...本质上说,你添加输入源和计时器到 RunLoop ,然后反复调用程序来启动 RunLoop 。每次 RunLoop 程序返回,检查是否出现任何条件批准线程退出。...换句话说,你可以调用 CFRunLoopRun, CFRunLoopRunInMode 或任何 NSRunLoop 方法来启动 RunLoop ,但其中必须有输入源或计时器的处理模块。...告知 RunLoop 停止: 显式的使用 CFRunLoopStop 函数停止 RunLoop 产生的结果类似于超时。 RunLoop 发送任何剩余 RunLoop 通知然后退出。

2.2K100
  • NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别

    must add the timer to a run loop manually by calling the addTimer:forMode: method of the corresponding NSRunLoop...翻译过来大体是这样的: 有三种方法来创建一个定时器 1.使用scheduledTimerWithTimeInterval 类方法创建计时器和进度上当前运行循环在默认模式(NSDefaultRunLoopMode...) 2.使用timerWithTimerInterval 类方法创建计时器对象没有调度运行循环(RunLoop) 在创建它,必须手动添加计时器运行循环,通过调用adddTimer:forMode:方法相应的...NSRunLoop对象 3.使用initWithFireDate 在创建它,必须手动添加计时器运行循环,通过使用addTimer:forMode:方法相应的NSRunLoop对象 1. - (void)...currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; [[NSRunLoop currentRunLoop] run];

    30340

    浅析RunLoop原理及其应用

    UIApplicationMain()函数方法会默认为主线程设置一个NSRunLoop对象,这个循环会随时监听屏幕上由用户触摸所带来的底层消息并将其传递给主线程去处理,当点击一个button事件的传递图上的调用栈可以看出...上图 input source 和 timer source 接受事件,然后在线程中处理事件都是由RunLoop推动完成。...,这是因为主线程的RunLoop模式是UI模式这个时候RunLoop循环是优先处理UI模式的任务而忽略了默认模式的计时器。...这个模式下滑动UITextView或停止的时候RunLoop是在UITRacking和default模式下切换的(从打印日志中可以看出)。...将耗时操作放到 DefaultMode 里只能解决滑动时流畅,但是停止时需要加载耗时,仍然会有卡顿的感觉。

    95020

    各种定时器–最全的定时器使用

    然而当系统休眠的时候,默认时钟是不走的,也就会导致计时器停止。...使用 dispatch_walltime 可以让计时器按照真实时间间隔进行计时; interval: 间隔(如果设置为 DISPATCH_TIME_FOREVER 则只执行一次) leeway..., 待系统重新激活时, 接着继续计时; 停止计时器: 停止GCD定时器的方式, Dispatch Source Timer 的使用以及注意事项中有提及, 主要有以下两种: // 关闭定时器 // 完全销毁定时器...使用场景:原理上可以看出,CADisplayLink适合做界面的不停重绘,比如视频播放的时候需要不停地获取下一帧用于界面渲染。...// 取值范围 1--100, 值越大, 频率越高 display.preferredFramesPerSecond = 2; [display addToRunLoop:[NSRunLoop

    2.3K30

    iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题

    项目需求: 点击操作之后倒计时开始,然后App在后台运行,倒计时不停止继续执行。短信验证码 、时间倒计时等情况都适用这个需求。...常理: iOS程序进入后台运行,10分钟之内就会被系统“杀死”,所以倒计时会停止执行。 解决思路: 方法一:根据记录开始的时间和获取当前时间进行时间差操作进行处理。...监听进入前台、进入后台的消息,在进入后台的时候存一下时间戳,停掉定时器(系统会强制停止定时器);在再进入前台时,计算时间差。若剩余的时间大于时间差,就减去时间差,否则赋值剩余时间为0。...observeApplicationActionNotification]; } #pragma mark --按钮点击事件-- - (void)brewBtnClick { if (_timer) { return; } // 给计时器赋值...scheduledTimerWithTimeInterval:1 target:self selector: @selector(timerAction) userInfo:nilrepeats:YES]; [[NSRunLoop

    6.7K84

    创建模型,停止死记硬背开始

    本文作者 Kevin Hannay 是一位生物学跨界到数学、数据科学的研究者,而他之所以选择“跨界”的原因便是数学学科能够让他脱离死记硬背的苦海,完全以像回归分析这样的方式来推导结论。...他认为,在机器学习/数据科学的模型创建中,应该停止死记硬背开始,而更多地借用回归分析的思维。 相信他的分享能够给大家一些启发,下面来看他的分享: 一、序曲 我记性很差。...在本文中,我将通过举例说明如何回归的角度来考虑常见的统计检验,从而集中讨论统计检验的最后一步。 二、快速温习下线性回归 在线性回归中,我们建立特征x和响应变量y之间关系的线性模型。...如果将置信水平95%提高到99%,将看到置信区间的间隔宽度增加。为了减少错误,需要更大范围的置信水平值。...而且,这就意味着我们可以停止记忆一堆统计检验知识。 创建模型,停止死记硬背开始。

    85020

    Docker 容器生命周期:创建、启动、暂停与停止----创建到停止多角度分析

    容器停止 容器停止是指将运行中的容器完全停止并终止其所有进程的执行。停止后,容器的状态和资源会被释放。本节将深入分析 Docker 容器的停止过程和相关技术。...正文 各个角度分析 Docker 容器生命周期 开发者角度:Docker 容器的创建、启动、暂停和停止对开发者而言是常见的操作,使得开发和测试环境的部署和管理更加灵活和高效。...各个领域探讨 Docker 容器的应用 微服务架构:Docker 容器的生命周期管理适用于微服务架构,使得每个微服务都可以独立创建、启动、暂停和停止。...各个层面分析 Docker 容器的生命周期 应用程序层面:Docker 容器的生命周期管理可以根据应用程序的需求来创建、启动、暂停和停止容器,实现灵活的应用程序部署和管理。...我们各个角度、领域、层面和技术等多个角度分析了 Docker 容器的生命周期。希望本文能够帮助读者全面理解和应用 Docker 容器技术。

    25810
    领券