iOS 避免NSTimer循环引用的解决办法

JLTimer是一个基于NSTimer的全局单例,用于解决循环引用问题并简化计时器管理。它提供了一次性、倒计时和重复计时器的创建,并自动管理资源,减少系统负担。使用Block回调,无需额外的触发方法,使得代码更加简洁。项目开源,提供GitHub和Gitee链接,方便开发者使用。
摘要由CSDN通过智能技术生成

    对于需要用到计时的场景多而且杂的时候,NSTimer 的循环引用问题不胜其烦,需要在各处地方写它的停止方法,往往搞的代码乱糟糟的。

    我在开发过程中有了一个想法,就是搞一个全局的单例来持有 NSTimer ,在它的触发方法中,将持有者的 Block 进行回调,这样就一劳永逸的解决了它的循环引用问题。

    由此便一发不可收拾,目前在该项目中本着使用简单、节省资源的原则下,新增了许多新特性,推荐各位一用,觉得好的话还请多多点赞关注,谢谢~

    话不多说,上地址:

链接: GitHub
链接: Gitee

JLTimer介绍

一款基于 NSTimer 、好用高效的计时器

  • 采用单例持有 NStimer 对象,通过 Block 实时回调给创建者,使控制器与其完全解耦,再也不用担心 NStimer 和持有者的循环引用问题。

  • 全自动管理,计时器无业务时时自动释放,创建者无需处理后续 invalid 等操作(仅限不重复的计时类型,当 isRepeat 是 true 时,也仅需调用 stopTimer 方法停止计时即可自动释放)。

  • 无论同时运行着多少计时任务,全局同一时间只有一个 NSTimer 在运行,有效节省系统资源。

  • 代码风格简洁易懂,使用 Block 回调方式,无需另写触发方法。

使用说明

1.快捷创建一个只回调一次的计时器。

[[JLTimer shared] addNewTaskWithOnceTime:5 handleBlock:^{
	
    //5秒后回调并停止计时           
}];

2.快捷创建一个倒计时的计时器。

[[JLTimer shared] addCountDownTaskWithTime:3 handleBlock:^{

    //每1秒回调1次,到第3秒时停止计时

}];

3.创建一个常规计时器,附带停止方法。

NSString *timerID = [[JLTimer shared] addNewTaskWithTime:1 isRepeat:true handleBlock:^{
            
    //每1秒回调1次,一直重复,返回值为当前计时器的ID
}];

//可以在业务需要的时候调用stopTimerWithID方法停止该计时器

[[JLTimer shared] stopTimerWithID:timerID];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carlos@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值