IOS GCD定时器实现,UITableViewCell 上跑定时器

iOS UITableView中CELL添加计时器实现自动删除的问题 最近在做一个“抢单”的功能,利用tableview来进行加载每一个单子上的数据,每个单子有60秒的生命周期。过了生命周期后会自动的删除cell. 我们都知道要删除cell,不仅需要[cellremoveFromSuperview];而且还需要删除数据源。但是由于计时器的使用,删除数据源的重新加载的时候又会遇到新的问题。 此时手动删除cell能比较简单地实现 -(UITableViewCe 阅读详情

浏览器搜索IOS GCD定时器会有超级多的文章写这个东西。今天自己实现了一个GCD定时器不用考虑其关闭界面界面或者使用者释放其自动释放。另UITableViewCell 跑定时器丝毫没有问题。核心代码如下

-(NSString *)addTimerWithTimeInterval:(NSTimeInterval)timeInterval

                               target:(id)target

                             selector:(SEL)selector

                             userInfo:(id)userInfo

                              repeats:(BOOL)repeats

                                 fire:(BOOL)fire{

    

    __block  NSString *timerKey = [NSString stringWithFormat:@"%p%@%f%f",target,NSStringFromSelector(selector),timeInterval,[[NSDate date] timeIntervalSinceNow]];

    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());

    [self.timerContainer setObject:timer forKey:timerKey];

    dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC));

    uint64_t interval = (uint64_t)(timeInterval * NSEC_PER_SEC);

    dispatch_source_set_timer(timer, start, interval, 0);

    typeof(self) __weak weakSelf = self;

    __weak id weakTarget = target;

    dispatch_source_set_event_handler(timer, ^{

        if (weakTarget && selector && [weakTarget respondsToSelector:selector]) {

            IMP imp = [weakTarget methodForSelector:selector];

            void (*func)(id, SEL,id) = (void *)imp;

            func(weakTarget, selector,userInfo);

            if (!repeats) {

                dispatch_cancel(timer);

                [weakSelf.timerContainer removeObjectForKey:timerKey];

            }

        }else{

            dispatch_cancel(timer);

            [weakSelf.timerContainer removeObjectForKey:timerKey];

        }

    });

    

    if (fire) {

        dispatch_resume(timer);

    }

    return timerKey;

}

Github 地址: https://github.com/ZXLBoaConstrictor/ZXLGCDTimer 用着还行的话给个star

iOS每个Cell倒计时 实现原理: 1、将数据(数据中的时间部分),以字典(字典中包括:记录所存数据下标,还有所剩时间 两个 key)的形式保存到数组中。 2、开启定时器,执行:遍历整个数组,每秒减 一,然后保存到他原来的位置。 3、每次减一之后,根据之前记录的下标找到对应的Cell,然后修改上面的数。这样就可以了。 提示:分组类型的tableView 也是没有一点问题的。效果如AP 阅读详情

相关推荐

iOS 开发面试 50 个高频易混淆知识点详解

很多人不清楚 Foundation 和 Core Foundation 之间的桥接转换,以及三个桥接关键字的区别。:很多人不清楚 Auto Layout 的原理,以及它与 Frame 布局的优缺点。:很多人不清楚 Swift 中单例模式的正确实现方式,以及单例模式的优缺点。:很多人不清楚工厂模式的作用,以及简单工厂、工厂方法、抽象工厂的区别。:很多人不清楚主队列和全局队列的特性,以及它们的使用场景。:很多人不清楚观察者模式的作用,以及它与代理模式的区别。

大模型大数据攻城狮的专栏 555

利用GCD 中的 dispatch_source_timer 给tableViewCell添加动态刷新的计时/倒计时功能

1、思路一(失败) 在设置好cell 里的内容之后在每个cell 返回时调用定时器事件,更新cell 内容,然后刷新整个表格。 - (void)didadida:(UITableViewCell *)cell indexPath:(NSIndexPath*)indexPath{ __weak typeof(self) weakSelf = self; if (@available(...

weixin_30527423的博客 280

NSTimer在tableView上的复用

关于定时器在tableview上的复用问题

iOS用定时器刷新列表Cell进行行倒计抢单功能

iOS用定时器刷新列表Cell进行行倒计抢单功能

面壁者LOGIC 3227

ArcGIS中利用DEM数据生成地形图既视感的等高线;利用掩膜进行等高线注记;DEM的可视化表达总结

文章目录前言一、效果图展示二、地形(DEM)可视化表达1.一维可视化2.二维可视化2.三维可视化二、ArcGIS中利用DEM数据制作等高线2.三维可视化2.三维可视化2.三维可视化2.三维可视化二、ArcGIS中利用DEM数据制作等高线2.三维可视化2.三维可视化2.三维可视化总结 前言 最近老师布置作业:DEM的可视化表达。想做一个等高线地形图那样、看起来高级一点的等高线,可是我看网上大多数教程都只展示了【等值线】工具,做出来效果都一般。我自认为自己做出来的效果还可以,把步骤分享给大家。 一、

pink_pig__的博客 5万+

【NVIDIA驱动的顽固问题】---- /dev/sdax:clean,xxx/xxx files,xxx/xxx blocks ---- 最全解决方法

本文的意义在于整理总结关于此问题的全部解决方法,希望能给大家节约时间。

lc1852109的博客 3127

iOS 在每一个cell上添加一个定时器的方案

1 首先创建一个数组,用来创建所有的定时器的时间 - (NSMutableArray *)totalLastTime { if (!_totalLastTime) { _totalLastTime = [NSMutableArray array]; } return _totalLastTime; } 2 当从网络请求过来时间之后,循环遍历,行数和时间作...

github_36850997的博客 2421

UWB定位进阶:如何利用DW1000的CIR数据做NLOS信号识别?

本文深入探讨了如何利用DW1000芯片的信道脉冲响应(CIR)数据进行非视距(NLOS)信号识别,以提升UWB定位精度。通过分析CIR数据的核心价值、预处理方法、特征提取技术以及机器学习模型构建,为研究人员和工程师提供了实用的解决方案,帮助克服室内定位中的NLOS挑战。

weixin_28729205的博客 474

ios nstimer实现延时_iOS趣味篇:NSTimer到底准不准?

今天看到一个有意思的问题:NStimer准吗?如果不准该怎样实现一个精确的NSTimer?既然这样问了,那从题目的角度出发,NSTimer肯定是不准的,但是它是以哪个精确度来作为“准”的标准呢,我们试着来探讨一下。环境:Xcode9,模拟器iPhone7(iOS11),iPhone6(iOS10)NSTimer我们来写一段代码-(void)touchesBegan:(NSSet*)touche...

weixin_30194213的博客 322

2023-07-04 Fast-Lio论文中公式(6)与BCH公式中近似雅可比公式的一致性推导

将(1)式代入(6)式,就有。

wmorries的博客 475

OpenFeign, Zuul, Gateway相互不兼容的问题总结

版本 Lib Vresion spring-cloud-starter-gateway 3.1.0 spring-cloud-dependencies 2021.0.0 spring-cloud-starter-netflix-zuul 2.2.6.RELEASE spring-cloud-starter-openfeign 3.1.0 1. Zuul 与OpenFeign 一起使用的问题 错误信息 jav.

Harry的博客 4131

iOS开发之UITableViewCell可暂停倒计时

前言 最近开发中,用到了UITableViewCell倒计时功能,这里将这部分功能分离出来,供大家参考。 1.原理 考虑到APP性能,这里只创建一个定时器,定时刷新当前正在显示的UITableViewCell,使用Model记录剩余倒计时时间和当前UITableViewCell是否暂停。 2.核心代码 创建定时器 考虑到方便和不需要销毁,这里定时器使用GCD—>GCD定时器封装OC&...

weixin_34614165的博客 425

华为OD机试真题 新系统2026-04-01 C++ 实现【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 1153

iOS 在cell中使用倒计时的处理方法(新)

本文来自简书,原文地址:http://www.jianshu.com/p/af62a56ef7e2 前言 之前的文章iOS 在cell中使用倒计时的处理方法得到大量的支持, 在这先感谢大家的支持. 但是也收到不少人的回复表示不会用, 需要一一解答, 由于之前写的时候没有使用Markdown编辑, 所以现在没法更新之前的文章, 重新写一份清晰的文章 需求: 每条Cell中显示倒

努力,可能成功!放弃,注定失败! 2341

C#的GDI+绘图详解

/消除锯齿 或 AntiAlias。// 1.在窗体或控件的Paint事件中,用PaintEventArgs e 创建绘图对象 ---- 控件或窗体重绘时。//为控件创建绘图对象。//--------------------以上方法三选一。//2.创建绘图对象 panel1中绘图。

weixin_50920631的博客 3457

8.Python基础语法(五)续【光说不练假把式,上题】

Python基础语法(二) 有关于Python循环语句的几道实操,让大家理解知识点更深更透彻~

孤寒者的博客 2万+

2023小满春招iOS笔试复盘:考点解析与避坑指南

在iOS开发中,内存管理和多线程一直是面试与工程实践的核心基础。理解引用计数、weak-strong dance以及GCD的队列调度原理,不仅是应对笔试的关键,也直接决定了线上App的稳定性与性能表现。同时,随着系统框架的深入,CoreBluetooth、分屏适配等能力逐渐成为考察候选人的新维度。本文以一份真实春招笔试卷为样本,系统梳理了iOS笔试中的高频考点,包括Runtime消息机制、UIStackView动态布局、LRU缓存实现等,并结合工程实践分析了常见失分点与避坑策略,为准备春招或实习面试的开发者

weixin_30587927的博客 631

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS开发笔记(一)

这是本人在开发中简单整理的iOS笔记,有点凌乱吧  哈哈。不过内容简单易懂  希望你能喜欢。 1、内存 内存溢出:内存不够用,数据溢出 内存泄漏:该释放的对象没有释放 2、性能检测方法 静态分析:product—>Analyze 动态分析:product—>profile 3、多线程安全解决方法和线程控制  >只在主线程刷新UI界面  >防止资源抢夺

iOS_JH的专栏 1207

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

iOS 小知识点(持续更新)

1、如何通过代码设置Buttontitle的字体大小 设置 Button.titleLabel.font = [UIFont systemFontOfSize:<#(CGFloat)#>]; 2、获取当前时间 NSDate *timeDate=[NSDate date]; NSDateF...

鸿鹄当高远 149

iOS面试必看 最全梳理

来自网络 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡。矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:...

weixin_30836759的博客 114

货拉拉2018秋招iOS笔试题解析:内存管理、Runtime与启动优化

iOS开发中,内存管理、运行时机制、多线程与性能优化是决定应用质量的关键能力。理解ARC下weak表如何清理弱引用、对象消息转发流程如何挽救崩溃,以及RunLoop如何驱动事件循环,是排查野指针、循环引用和卡顿问题的技术基石。从内存管理到启动流程,这些底层原理直接影响App的稳定性与用户体验,也是大型物流App保障司机端定位推送、用户端地图交互等高频场景的基础。本文以货拉拉2018秋招iOS笔试题为例,结合实际工程实践,拆解高频考点与出题逻辑,为校招复习提供参考。

weixin_34342992的博客 707

倒计时工具类:PYContDownManager

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34197488的博客 101

iOS的几种定时器

在开发中我们经常用到定时器,iOS为我们提供了多种定时器,包括NSTimer、CADisplayLink、GCD。 NSTimer iOS中最基本的定时器,其通过RunLoop来实现,一般情况下较为准确,但当前循环耗时操作较多时,会出现延迟问题。同时,也受所加入的RunLoop的RunLoopMode影响,如果因为创建的NSTimer默认是被加入到了defaultMode,比如在一个视图里...

小菜媛的博客 3375

iOS cell上的定时器

转载地址:http://blog.youkuaiyun.com/littleSun_zheng/article/details/51426859 实现原理:  1、将数据(数据中的时间部分),以字典(字典中包括:记录所存数据下标,还有所剩时间 两个 key)的形式保存到数组中。  2、开启定时器,执行:遍历整个数组,每秒减 一,然后保存到他原来的位置。  3、每次减一之后,根据

lurenjia_KB的博客 3183
上一篇: Python 零基础学习记录之 IOS组件发布脚本
下一篇: IOS开发:记录处理 Error Domain=NSURLErrorDomain Code=-1005 "网络连接已中断。” Http请求报错
蟒蛇_AutoFire
博客等级 码龄16年 21粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值