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

IMU数据处理避坑指南:从理论到实践的加速度计重力消除方案

本文详细解析了IMU数据处理中的重力消除技术,从理论基础到实践应用,涵盖了加速度计和陀螺仪的核心问题。通过ROS2实战案例,介绍了静态标定与动态校准的技术对比,以及多传感器融合的进阶策略,帮助开发者避免常见陷阱,提升IMU数据处理的精度和效率。

purple的博客 741

工程师必看:如何用MINITAB快速计算传感器寿命(附详细步骤)

本文为工程师提供了使用MINITAB软件快速计算传感器寿命的详细实战指南。文章重点阐述了如何通过数据预处理、回归分析拟合阿伦尼斯模型,并最终预测平均寿命与置信区间,帮助工程师高效处理加速寿命试验数据,提升可靠性分析工作的准确性与效率。

weixin_29296241的博客 248

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

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

github_36850997的博客 2421

Gromacs实战:从蛋白质-小分子对接到分子动力学模拟全流程解析

本文详细解析了使用Gromacs进行蛋白质-小分子对接和分子动力学模拟的全流程,包括文件准备、拓扑生成、复合物构建、溶剂化处理、能量最小化及平衡模拟等关键步骤。通过实战案例,帮助研究者验证药物分子与靶标蛋白的结合稳定性,提升分子动力学模拟的效率和准确性。

weixin_29216353的博客 380

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

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

weixin_30194213的博客 322

【已解决,极简单!!】求助,R语言读取csv文件各种报错

【已解决】本来之前没问题,今天更新了Rstudioh以及R,就各种报错了。也看了目前能读取到的文件,从第一个中文字符直接就没有了。也就是说 还是读取中文字符的问题?新人初学,求大佬轻喷!

youyouluming945的博客 3876

用MCP扩展Cursor的5种神奇用法:从文件操作到网页抓取实战

本文深入探讨了如何利用MCP(Model Context Protocol)扩展Cursor AI编程助手,解锁五种高效实用场景。从文件系统操作、网页内容抓取,到数据库查询、Figma设计稿对接,乃至构建自定义MCP服务器,文章通过实战案例展示了如何将Cursor从代码编辑器升级为能理解并操作工作环境的智能助手,显著提升开发效率与自动化水平。

weixin_29231027的博客 315

iOS开发之UITableViewCell可暂停倒计时

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

weixin_34614165的博客 425

PX4与ROS协同仿真:从键盘控制到无人机自主飞行

本文详细介绍了如何搭建PX4与ROS协同仿真环境,实现从键盘控制到无人机自主飞行的完整流程。通过XTDrone项目整合PX4飞控、ROS通信框架与Gazebo物理引擎,逐步讲解环境配置、键盘控制实现原理,并深入剖析了迈向Offboard模式实现自主飞行的核心代码与数据流,为无人机算法开发与测试提供了安全的仿真沙盒。

weixin_29169899的博客 498

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

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

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

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7704

学Simulink--基础微电网场景实例:基于Simulink的微电网经济调度优化策略仿真

指标传统调度PSO经济调度(本文)目标值总运行成本(元/h)45.232.5(工况1)降低≥20%调度响应时间(s)25<30储能SOC范围(%)50~50(不变)28~56(动态优化)20~80弃风弃光率(%)0(强制满发)0(优化消纳)0原理:微电网经济调度通过PSO算法优化各单元出力,以总成本最小化为目标,平衡功率平衡与设备约束;建模:Simulink中用实现PSO控制器,结合PV/WT/DG/ESS模型,完成闭环优化;验证。

amy_mhd的博客 67

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

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

weixin_30587927的博客 631

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

iOS开发笔记(一)

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

iOS_JH的专栏 1207

IEM模型,地表粗糙度模拟

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS 小知识点(持续更新)

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

鸿鹄当高远 149

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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、付费专栏及课程。

余额充值