为什么 UIScrollView 的滚动会导致 NSTimer 失效?

定时器里面有个runoop mode,一般定时器是运行在defaultmode上。但是如果滑动了这个页面,主线程runloop会转到UITrackingRunLoopMode中,这时候就不能处理定时器了,造成定时器失效,原因就是runroop mode选错了,解决办法有2个


一个是更改mode为NSRunLoopCommonModes(无论runloop运行在哪个mode,都能运行),

还有种办法是切换到主线程来更新UI界面的刷新

[NSThread detachNewThreadSelector:@selector(bannerStart) toTarget:self withObject:nil];

- (void)bannerStart{

_shufflingFigureTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(shufflingFigureTimerAction:) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:_shufflingFigureTimer forMode:NSDefaultRunLoopMode];

[[NSRunLoop currentRunLoop] run];

}

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

推荐阅读更多精彩内容

  • 基本概念 进程 进程是指在系统中正在运行的一个应用程序,而且每个进程之间是独立的,它们都运行在其专用且受保护的内存...
    小枫123阅读 922评论 0 1
  • Runloop基础知识 1.1 字面意思a 运行循环 b 跑圈 1.2 基本作用(作用重大)a 保持程序的持续运行...
    OBJECT_C阅读 273评论 0 1
  • 一、什么是NSRunLoop NSRunLoop是消息机制的处理模式 NSRunLoop的作用在于有事情做的时候使...
    KK_boy阅读 520评论 0 0
  • 1.批评不但不会改变事实,反而会招致愤恨。 2.尽量去了解别人,而不要用责骂的方式。尽量设身处地地去想,他们为什么...
    大大希阅读 89评论 0 1
  • 打开页面,就想写这个标题 其实写什么根本没有想,而且分分钟文不对题 何妨? 平淡生活,就是每个不曾起舞的日子,堆叠...
    薇薇董阅读 287评论 0 0