swiftnstimer定时器

上传人:博****1 文档编号:496327155 上传时间:2023-04-21 格式:DOCX 页数:9 大小:19.87KB
返回 下载 相关 举报
swiftnstimer定时器_第1页
第1页 / 共9页
swiftnstimer定时器_第2页
第2页 / 共9页
swiftnstimer定时器_第3页
第3页 / 共9页
swiftnstimer定时器_第4页
第4页 / 共9页
swiftnstimer定时器_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《swiftnstimer定时器》由会员分享,可在线阅读,更多相关《swiftnstimer定时器(9页珍藏版)》请在金锄头文库上搜索。

1、swiftnstimer定时器、,、.前言publicclassNSTimer:NSObject作用在指定的时间执行指定的任务。每隔一段时间执行指定的任务。回到顶部1、定时器的创建当定时器创建完(不用scheduled的,添加到runloop中)后,该定时器将在初始化时指定的ti秒后自动触发。scheduled方式:创建并启动定时器。默认将时钟以NSDefaultRunLoopMode模式添加到运行循环。发生用户交互的时候,时钟会被暂停。/*publicclassfuncscheduledTimerWithTimeInterval(ti:NSTimeInterval,targetaTarget

2、:AnyObject,selectoraSelector:Selector,userInfo:AnyObject?,repeatsyesOrNo:Bool)-NSTimer参数:TimeInterval:触发时间,单位秒target:定时起触发对象selector:定时器响应方法userInfo:用户信息repeats:是否重复执行,YES每个指定的时间重复执行,NO只执行一次*/创建并启动定时器lettimer:NSTimer=NSTimer.scheduledTimerWithTimeInterval(2.0,target:self,selector:#selector(ViewContr

3、oller.updateTimer(_:),userInfo:nil,repeats:true)timer方式:创建定时器,添加到运行循环后启动定时器。将时钟以指定的模式添加到运行循环。/*+(NSTimer*)timerWithTimeInterval:(NSTimeInterval)titarget:(id)aTargetselector:(SEL)aSelectoruserInfo:(nullableid)userInforepeats:(BOOL)yesOrNo;-(void)addTimer:(NSTimer*)timerforMode:(NSString*)mode;mode:NS

4、DefaultRunLoopMode:时钟,网络。发生用户交互的时候,时钟会被暂停NSRunLoopCommonModes:用户交互,响应级别高。发生用户交互的时候,时钟仍然会触发,如果时钟触发方法非常耗时,使用此方式时用户操作会造成非常严重的卡顿。*/创建定时器lettimer:NSTimer=NSTimer(timeInterval:2.0,target:self,selector:#selector(ViewController.updateTimer(_:),userInfo:nil,repeats:true)/将定时器添加到运行循环NSRunLoop.currentRunLoop()

5、.addTimer(timer,forMode:NSRunLoopCommonModes)回到顶部2、定时器的启动与关闭/启动定时器timer.fireDate=NSDate.distantFuture()/暂停定时器timer.fireDate=NSDate.distantPast()/关闭定时器,永久关闭定时器timer.invalidate()回到顶部3、子线程定时器的创建在子线程创建定时器时,需要手动开启子线程的运行循环。dispatch_async(dispatch_get_global_queue(0,0)/*scheduled或timer方式创建*/lettimer:NSTime

6、r=NSTimer(timeInterval:2.0,target:self,selector:#selector(ViewController.updateTimer(_:),userInfo:nil,repeats:true)NSRunLoop.currentRunLoop().addTimer(timer,forMode:NSRunLoopCommonModes)/启动子线程的运行循环/*这句代码就是一个死循环!如果不停止运行循环,不会执行添加到此句之后的任何代码*/CFRunLoopRun()/停止子线程运行循环之前,不会执行添加到此处的任何代码varnum:Int=0funcupda

7、teTimer(timer:NSTimer)num=num+1/满足条件后,停止当前的运行循环if(num=8)/停止当前的运行循环/*一旦停止了运行循环,后续代码能够执行,执行完毕后,线程被自动销毁*/CFRunLoopStop(CFRunLoopGetCurrent()回到顶部4、定时任务1) performSelector/*1.5秒后自动调用self的hideHUD方法*/self.performSelector(#selector(NsTimer.hideHUD),withObject:nil,afterDelay:1.5)/取消延时调用NSObject.cancelPrevious

8、PerformRequestsWithTarget(self,selector:#selector(NsTimer.hideHUD),object:nil)2) GCD/多线程/*1.5秒后自动执行block里面的代码*/dispatch_after(dispatch_time(DISPATCH_TIME_NOW,Int64(1.5*Double(NSEC_PER_SEC),dispatch_get_main_queue()self.hud.alpha=0.0;3) NSTimer/*1.5秒后自动调用self的hideHUD方法*/NSTimer.scheduledTimerWithTimeInterval(1.5,target:self,selector:#selector(NsTimer.hideHUD),userInfo:nil,repeats:false)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号