转自 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`,则需要手动将其添加到相应的`NSRunLoop`。 5. **线程安全**: `NSTimer`通常与UI交互,因此需要注意线程安全问题。在非主线程上修改UI可能会导致崩溃,确保在主线程上处理UI...
`NSTimer`是Foundation框架的一部分,它不是线程安全的,因此通常在RunLoop中使用以确保其正确运行。`NSTimer`并不直接调用其target的方法,而是将消息添加到RunLoop中,由RunLoop在合适的时机来触发。 二、创建`...
然而,在复杂的视图控制器,如 `UITableView` 中使用 `NSTimer`,可能会遇到一些挑战,特别是涉及到对象复用的情况。本篇文章将深入探讨 `NSTimer` 在 `UITableView` 中的复用问题及其解决方案。 首先,理解 `...
在本文中,我们将深入探讨`NSTimer`的使用、生命周期以及避免内存泄漏的方法。 首先,创建一个简单的`NSTimer`示例,每3秒在控制台输出"Fire"。通常,我们会这样创建并启动定时器: ```objc [NSTimer ...
在iOS开发中,`NSTimer` 是一个非常重要的类,用于在特定的时间间隔后执行某个操作,例如倒计时或定期更新UI。本教程将深入探讨`NSTimer`的使用,包括如何创建、启动、暂停以及取消定时器,并通过一个倒计时10秒的...
在iOS和macOS开发中,`NSTimer`是苹果提供的一种强大的工具,用于在特定时间间隔后执行某个操作。它是Foundation框架的一部分,适用于Objective-C和Swift开发者。`NSTimer`可以让你的应用程序按照预设的时间间隔执行...
在iOS开发中,`NSTimer`是一个非常实用且常见的类,它可以帮助开发者实现定时任务的功能。本文将深入解析`NSTimer`的使用方法,包括如何创建定时器、设置定时器的属性以及如何管理定时器的生命周期等。 #### 二、...
`NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)target selector:(SEL)aSelector userInfo...
这个"IOS应用源码——nstimer.zip"文件显然包含了关于如何在iOS应用中使用NSTimer的源代码示例。NSTimer是Foundation框架的一部分,是iOS应用中实现定时触发事件的关键工具。 首先,我们要理解NSTimer的工作原理。...
4. NSTimer:通常在RunLoop中运行,不推荐在子线程使用,可能导致内存泄漏和性能问题。 三、GCD详解 1. 并发队列(Concurrent Queue):可以同时执行多个任务,适用于能并行处理的任务。 2. 串行队列(Serial Queue...
在iOS和macOS开发中,`NSTimer`是Objective-C中的一个关键类,用于实现定时任务,例如执行周期性操作或者在特定时间间隔后触发某事件。本示例项目"NSTimer 定时器示例"旨在深入讲解如何创建、控制和管理`NSTimer`,...
2. 异步/同步执行:`dispatch_async`异步执行不会阻塞当前线程,`dispatch_sync`同步执行会阻塞当前线程,应避免在主线程中使用同步执行。 3. 优先级:可以设置队列的优先级,如`DISPATCH_QUEUE_PRIORITY_DEFAULT`、...
- 在主线程中使用定时器,可以实现周期性的任务调度。例如,使用`NSTimer`的`+scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法。 ```objective-c [NSTimer ...
4. NSTimer与NSRunLoop:NSTimer可以配合NSRunLoop在特定线程上定时触发事件,通常用于周期性任务。 五、线程管理的挑战 尽管多线程带来了性能提升,但也增加了代码复杂性和潜在的线程安全问题。开发者需要关注...
使用`NSTimer.scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法创建一个定时器,并将其添加到RunLoop中,这样即使线程暂时无事可做,定时器也会在指定时间间隔后触发任务。 5. **控制线程...
在Swift编程中,UIProgressView、NSTimer和UIStepper是三个重要的UI组件,它们各自在用户界面交互中扮演着不同的角色。这篇文章将深入探讨如何将这三个组件结合使用,为iOS应用创建动态的进度条更新功能。 首先,...
NSTimer并不是线程安全的,因此在多线程环境下使用时需要注意同步问题。创建一个NSTimer的基本语法如下: ```swift let timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector...
在多线程环境中,`NSTimer`的使用需要特别注意线程同步,而`Repeat`则在内部处理了这些细节,开发者无需担心线程安全问题。 与`NSTimer`相比,`Repeat`的优势在于其易用性、可读性和低耦合度。它减少了因为不熟悉`...
4. **线程安全**: 由于定时器经常在多线程环境中使用,`TryEZTimer`可能已经考虑到了线程安全问题,确保在并发场景下的正确性。 5. **易于调试**: 可能包含了更详细的日志或追踪机制,帮助开发者在出现问题时更容易...