NSTimer的使用

场景A
  • 调用一次计时器方法
//不重复,只调用一次。timer运行一次就会自动停止运行
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO];  
  • 重复调用计时器方法
//每1秒运行一次function方法。
 timer = 
 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(function:) userInfo:nil repeats:YES];  

注意:将计数器的repeats设置为YES的时候,self的引用计数会加1。因此可能会导致self(即viewController)不能release,所以,必须在dealloc的时候,将计数器timer停止,否则可能会导致内存泄露。

  • 取消定时器

停止timer的运行,但这个是永久的停止:(注意:停止后,一定要将timer赋空,否则还是没有释放。不信?你自己试试~)

//取消定时器  
[timer invalidate];
timer = nil;  
场景B

要想实现:先停止,然后再某种情况下再次开启运行timer,可以使用下面的方法:
首先关闭定时器不能使用上面的方法,应该使用下面的方法:

  • 暂停定时器
[myTimer setFireDate:[NSDate distantFuture]];  
  • 继续定时器
[myTimer setFireDate:[NSDate distantPast]];  
场景C

例子:比如,在页面消失的时候关闭定时器,然后等页面再次打开的时候,又开启定时器。
(主要是为了防止它在后台运行,暂用CPU)可以使用下面的代码实现:

//页面将要进入前台,开启定时器  
-(void)viewWillAppear:(BOOL)animated  
{  
    //开启定时器  
    [scrollView.myTimer setFireDate:[NSDate distantPast]];  
}  
  
//页面消失,进入后台不显示该页面,关闭定时器  
-(void)viewDidDisappear:(BOOL)animated  
{  
    //关闭定时器  
    [scrollView.myTimer setFireDate:[NSDate distantFuture]];  
}  
场景D

NSTimer和UIScrollView的用法

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 300)];
 [self.view addSubview:scrollView];
    
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(method:) userInfo:nil repeats:YES];

//修改当前runloop的mode为NSRunLoopCommonModes
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

NSDefaultRunLoopMode 默认模式
UITrackingRunLoopMode 拖动默认(一般用在滚动视图)
NSRunLoopCommonModes 可配置的一组模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NSTimer继承自NSObject,用于创建定时器对象,以提供执行延迟动作或周期性动作的方法。通常情况下,创建的...
    蹲瓜阅读 6,351评论 0 5
  • 原文链接 你可以使用的定时器类来创建一个定时器对象,或者更简单地说,定时器。一个定时器在指定的时间到达后触发,并发...
    dacheng阅读 1,276评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 自我介绍: 姓名:桃花岛住了个桃花仙 老家:安徽 身高:168CM 体重:94斤 出生日期:1996/2/22 职...
    桃花岛住了个桃花仙阅读 1,770评论 82 17
  • 今天饱餐一顿后心血来潮要到当地的校园去走一回,不料与朋友一拍即合,遂一堆大龄青年嘻嘻哈哈地重新踏上久违的校园,看到...
    21不思量阅读 158评论 0 0