电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

iOS中幾種定時器的實現(xiàn)小結

瀏覽:23日期:2022-09-17 08:14:26

在軟件開發(fā)過程中,我們常常需要在某個時間后執(zhí)行某個方法,或者是按照某個周期一直執(zhí)行某個方法。在這個時候,我們就需要用到定時器。

然而,在iOS中有很多方法完成以上的任務,到底有多少種方法呢?經(jīng)過查閱資料,大概有三種方法:NSTimer、CADisplayLink、GCD。接下來我就一一介紹它們的用法。

一、NSTimer

1. 創(chuàng)建方法

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO]; TimerInterval : 執(zhí)行之前等待的時間。比如設置成1.0,就代表1秒后執(zhí)行方法 target : 需要執(zhí)行方法的對象。 selector : 需要執(zhí)行的方法 repeats : 是否需要循環(huán)

2. 釋放方法

[timer invalidate];

注意 :調用創(chuàng)建方法后,target對象的計數(shù)器會加1,直到執(zhí)行完畢,自動減1。如果是循環(huán)執(zhí)行的話,就必須手動關閉,否則可以不執(zhí)行釋放方法。

3. 特性

存在延遲不 管是一次性的還是周期性的timer的實際觸發(fā)事件的時間,都會與所加入的RunLoop和RunLoop Mode有關,如果此RunLoop正在執(zhí)行一個連續(xù)性的運算,timer就會被延時出發(fā)。重復性的timer遇到這種情況,如果延遲超過了一個周期,則 會在延時結束后立刻執(zhí)行,并按照之前指定的周期繼續(xù)執(zhí)行。

必須加入Runloop使用上面的創(chuàng)建方式,會自動把timer加入MainRunloop的NSDefaultRunLoopMode中。如果使用以下方式創(chuàng)建定時器,就必須手動加入Runloop:

NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];二、CADisplayLink

1. 創(chuàng)建方法

self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

2. 停止方法

[self.displayLink invalidate]; self.displayLink = nil;

**當把CADisplayLink對象add到runloop中后,selector就能被周期性調用,類似于重復的NSTimer被啟動了;執(zhí)行invalidate操作時,CADisplayLink對象就會從runloop中移除,selector調用也隨即停止,類似于NSTimer的invalidate方法。**

3. 特性

屏幕刷新時調用 CADisplayLink 是一個能讓我們以和屏幕刷新率同步的頻率將特定的內容畫到屏幕上的定時器類。CADisplayLink以特定模式注冊到runloop后,每當屏幕顯示 內容刷新結束的時候,runloop就會向CADisplayLink指定的target發(fā)送一次指定的selector消息, CADisplayLink類對應的selector就會被調用一次。所以通常情況下,按照iOS設備屏幕的刷新率60次/秒

延遲

iOS設備的屏幕刷新頻率是固定的,CADisplayLink在正常情況下會在每次刷新結束都被調用,精確度相當高。但如果調用的方法比較耗時,超過了屏幕刷新周期,就會導致跳過若干次回調調用機會。 如果CPU過于繁忙,無法保證屏幕60次/秒的刷新率,就會導致跳過若干次調用回調方法的機會,跳過次數(shù)取決CPU的忙碌程度。

使用場景 從原理上可以看出,CADisplayLink適合做界面的不停重繪,比如視頻播放的時候需要不停地獲取下一幀用于界面渲染。

4. 重要屬性

frameInterval NSInteger類型的值,用來設置間隔多少幀調用一次selector方法,默認值是1,即每幀都調用一次。 duration readOnly 的CFTimeInterval值,表示兩次屏幕刷新之間的時間間隔。需要注意的是,該屬性在target的selector被首次調用以后才會被賦值。 selector的調用間隔時間計算方式是:調用間隔時間 = duration × frameInterval。三、GCD方式

執(zhí)行一次

double delayInSeconds = 2.0;dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ //執(zhí)行事件});

重復執(zhí)行

NSTimeInterval period = 1.0; //設置時間間隔dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), period * NSEC_PER_SEC, 0); //每秒執(zhí)行dispatch_source_set_event_handler(_timer, ^{ //在這里執(zhí)行事件});dispatch_resume(_timer);

GCD的方式,我在網(wǎng)上只能找到這些資料,目前自己還在學習中,以后會更新

到此這篇關于iOS中幾種定時器的實現(xiàn)小結的文章就介紹到這了,更多相關iOS 定時器內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: IOS
相關文章:
主站蜘蛛池模板: 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 金属检测机_金属分离器_检针验针机_食品药品金属检探测仪器-广东善安科技 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 北京亦庄厂房出租_经开区产业园招商信息平台| 杭州双螺杆挤出机-百科| 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】| 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 |