`

在新线程中使用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];
分享到:
评论

相关推荐

    简单的时间选择器Nstimer

    如果你需要在其他线程上使用`NSTimer`,则需要手动将其添加到相应的`NSRunLoop`。 5. **线程安全**: `NSTimer`通常与UI交互,因此需要注意线程安全问题。在非主线程上修改UI可能会导致崩溃,确保在主线程上处理UI...

    ios 时间定时器 NSTimer应用demo

    `NSTimer`是Foundation框架的一部分,它不是线程安全的,因此通常在RunLoop中使用以确保其正确运行。`NSTimer`并不直接调用其target的方法,而是将消息添加到RunLoop中,由RunLoop在合适的时机来触发。 二、创建`...

    NSTimer在tableView上的复用

    然而,在复杂的视图控制器,如 `UITableView` 中使用 `NSTimer`,可能会遇到一些挑战,特别是涉及到对象复用的情况。本篇文章将深入探讨 `NSTimer` 在 `UITableView` 中的复用问题及其解决方案。 首先,理解 `...

    iOS 中的 NSTimer.pdf

    在本文中,我们将深入探讨`NSTimer`的使用、生命周期以及避免内存泄漏的方法。 首先,创建一个简单的`NSTimer`示例,每3秒在控制台输出"Fire"。通常,我们会这样创建并启动定时器: ```objc [NSTimer ...

    ios计时器NSTimer的使用

    在iOS开发中,`NSTimer` 是一个非常重要的类,用于在特定的时间间隔后执行某个操作,例如倒计时或定期更新UI。本教程将深入探讨`NSTimer`的使用,包括如何创建、启动、暂停以及取消定时器,并通过一个倒计时10秒的...

    NSTimer定时器

    在iOS和macOS开发中,`NSTimer`是苹果提供的一种强大的工具,用于在特定时间间隔后执行某个操作。它是Foundation框架的一部分,适用于Objective-C和Swift开发者。`NSTimer`可以让你的应用程序按照预设的时间间隔执行...

    NSTimer 使用 文档说明

    在iOS开发中,`NSTimer`是一个非常实用且常见的类,它可以帮助开发者实现定时任务的功能。本文将深入解析`NSTimer`的使用方法,包括如何创建定时器、设置定时器的属性以及如何管理定时器的生命周期等。 #### 二、...

    NSTimer实现的小计时器

    `NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)target selector:(SEL)aSelector userInfo...

    IOS应用源码——nstimer.zip

    这个"IOS应用源码——nstimer.zip"文件显然包含了关于如何在iOS应用中使用NSTimer的源代码示例。NSTimer是Foundation框架的一部分,是iOS应用中实现定时触发事件的关键工具。 首先,我们要理解NSTimer的工作原理。...

    iOS 多线程运用

    4. NSTimer:通常在RunLoop中运行,不推荐在子线程使用,可能导致内存泄漏和性能问题。 三、GCD详解 1. 并发队列(Concurrent Queue):可以同时执行多个任务,适用于能并行处理的任务。 2. 串行队列(Serial Queue...

    NSTimer 定时器示例

    在iOS和macOS开发中,`NSTimer`是Objective-C中的一个关键类,用于实现定时任务,例如执行周期性操作或者在特定时间间隔后触发某事件。本示例项目"NSTimer 定时器示例"旨在深入讲解如何创建、控制和管理`NSTimer`,...

    OC多线程管理

    2. 异步/同步执行:`dispatch_async`异步执行不会阻塞当前线程,`dispatch_sync`同步执行会阻塞当前线程,应避免在主线程中使用同步执行。 3. 优先级:可以设置队列的优先级,如`DISPATCH_QUEUE_PRIORITY_DEFAULT`、...

    有关主线程和子线程

    - 在主线程中使用定时器,可以实现周期性的任务调度。例如,使用`NSTimer`的`+scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法。 ```objective-c [NSTimer ...

    iOS 开发 之 多线程总结

    4. NSTimer与NSRunLoop:NSTimer可以配合NSRunLoop在特定线程上定时触发事件,通常用于周期性任务。 五、线程管理的挑战 尽管多线程带来了性能提升,但也增加了代码复杂性和潜在的线程安全问题。开发者需要关注...

    RunLoop-线程保活.zip

    使用`NSTimer.scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法创建一个定时器,并将其添加到RunLoop中,这样即使线程暂时无事可做,定时器也会在指定时间间隔后触发任务。 5. **控制线程...

    Swift:UIProgressView+NSTimer+UIstepper

    在Swift编程中,UIProgressView、NSTimer和UIStepper是三个重要的UI组件,它们各自在用户界面交互中扮演着不同的角色。这篇文章将深入探讨如何将这三个组件结合使用,为iOS应用创建动态的进度条更新功能。 首先,...

    BackgroundApp:一个在后台演示 NSTimer 的简单应用

    NSTimer并不是线程安全的,因此在多线程环境下使用时需要注意同步问题。创建一个NSTimer的基本语法如下: ```swift let timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector...

    swift-Repeat:是NSTimer的小型轻量级替代品具有现代Swift语法

    在多线程环境中,`NSTimer`的使用需要特别注意线程同步,而`Repeat`则在内部处理了这些细节,开发者无需担心线程安全问题。 与`NSTimer`相比,`Repeat`的优势在于其易用性、可读性和低耦合度。它减少了因为不熟悉`...

    TryEZTimer:尝试使用EZ-Timer类别以避免在使用NSTimer时出现保留问题

    4. **线程安全**: 由于定时器经常在多线程环境中使用,`TryEZTimer`可能已经考虑到了线程安全问题,确保在并发场景下的正确性。 5. **易于调试**: 可能包含了更详细的日志或追踪机制,帮助开发者在出现问题时更容易...

Global site tag (gtag.js) - Google Analytics