`

在新线程中使用NSTimer

    博客分类:
  • ios
 
阅读更多

转自 http://blog.csdn.net/sjzsp/article/details/6947591

方法一:

-(void) viewDidLoad{
[self performSelectorInBackground:@selector(call1) withObject:nil]; 
}

-(void) call1{
timer1 = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO]; 

[[NSRunLoop currentRunLoop] addTimer:timer1 forMode:NSRunLoopCommonModes];

}

-(void) call2{
// do something
timer1 invalidate];
timer1 = nil;
}

方法二:

- (void)viewDidAppear:(BOOL)animated {
    NSThread* timerThread = [[NSThread alloc] initWithTarget:self selector:@selector(timerStart) object:nil];
    [timerThread start]; 
}

-(void)timerStart
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
    timer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(method) userInfo:nil repeats:YES] retain];//一定要retain,不然timerStart执行完后,NSTimer就被释放了。
    [runLoop run];
    [pool release];
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    [timer invalidate];
}
方法三:
timer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(SendHeartBeat) userInfo:nil repeats:YES];
 [[NSRunLoop mainRunLoop] addTimer:heartTimer forMode:NSDefaultRunLoopMode];
分享到:
评论

相关推荐

    XTimer:解决了NSTimer需要在子线程中手动添加并打开runLoop的问题,并会导致内存泄漏

    XTimer使用GCD Source解决了NSTimer中可能出现的问题。 它还实现了定时器暂停和重启的功能。 例 要运行示例项目,请克隆存储库,然后首先从Example目录运行pod install 。 要求 安装 XTimer可通过。 要安装它,只需...

    iOS之UITableView计时器的实现方式总结(NSTimer、DispatchSource、CADisplayLink)

    本篇博客会给出在TableView中使用NSTimer或者DispatchSourcer中常见的五种方式。当然下方第一种方式是常规做法,不过也是UITableView中使用NSTimer的一个坑。其他三种方式是为了绕过这个坑的解决方案。 当然,本篇...

    重复:G使用GCD制作的Swift,Debouncer和Throttler的Modern Timer(NSTimer的替代产品)

    只需调用every()或once即可创建一个新的Timer,即使在后台线程中也是如此。 避免强烈引用目标目标,并避免NSObject继承。 支持多个观察员从计时器接收火灾事件。 无需分配新实例即可暂停,启动,恢复和重置计时器的...

    Stopwatch:已弃用。 一个iOS应用程序,使用经过的时间作为练习MVC,发现线程基础和应用NSTimer的上下文

    弃用警告 Swift教育资料已过时,将不再维护。 跑表 2级,七个课程 引导学生更深入地思考模型,视图,控制器和用户。 教学生如何将界面元素连接到控制器动作,以及如何避免导致界面无法响应的陷阱。...

    IOS计时器设计

    多种方法实现计时器,包括通信获取服务器端系统时间,多线程实现,NSTimer实现等等 http://blog.csdn.net/dingxiaowei2013/article/details/9864279

    3分钟快捷创建高性能轮播图

    原因:NSTimer 默认是放到系统的主线程的,当用户操作其他主线程任务时,会造成NSTimer的线程阻塞,用户停止其他操作时又会重启NSTimer 解决:设置timer在runloop中模式为CommonModes 7. 解决轮播图片过多的性能问题...

    DelphiPlatformTimerQueue:使用OS平台API的Delphi跨平台线程计时器

    在本文中,我们将展示如何以统一的方式在Delphi的移动,桌面和服务器平台上使用这些API,以及如何接收您已经熟悉的OnTimer()事件。 当然,可以创建自己的线程池并模拟计时器事件。 但是,操作系统已经具有用于...

    runLoop使用详情,视频讲解(一)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(七)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(八)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(六)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(五)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(二)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(三)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(九)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    runLoop使用详情,视频讲解(四)

    程序中添加每3秒响应一次的NSTimer,当拖动tableview的时候timer可能无法响应要怎么解决? 6.runLoop是怎么响应用户操作的,具体流程是什么样的? 7.说说runLoop的几种状态? 8.runLoop的model作用是什么? 9.runLoop...

    CFRunLoop源码

    Runloop的工作:如何管理事件/消息,如何让线程在没有处理消息时休眠以避免资源占用、在有消息到来时立刻被唤醒。 Osx/ios提供了两种runloop对象 : CFRunLoopRef是在CoreFoundation框架呢,是纯C函数的API,是线程...

    sample-ios-timer:我将尝试了解iOS计时器并制作示例。 (仍在进行中)

    :Objc中的NSTimer,Swift中的Timer类。 iOS 2.0以上 计时器和是完全不同的东西。 计时器与配合使用。 计时器不是一个单独的线程,而是其执行循环中的一个滴答声。 计时器不再循环,因此必须在终止之前执行...

    ios-鹏哥哥放大镜.zip

    鹏哥哥放大镜 封装好 线程安全 无泄漏 简单易用 移植性好 使用中有问题 请前去GitHub与我联系 感谢您的使用 对您有帮助的话 送我一颗星星可好 使用简介: 1.PGGMagnigierView导入放大镜类 也可以在这里面进行镜框...

    leetcode站台停留次数-iOS-Ready-For-Interview:认真工作!热爱生活!

    6.NSTimer定时器 准备资料: 《iOS与OS X多线程和内存管理》《52个有效方法》 实践: Swift 《objccn-swifter-tips》《objccn-advanced-swift》 UIKit UIView、UIViewController生命周期 事件响应链 UItableView优化 ...

Global site tag (gtag.js) - Google Analytics