`

IOS 中NSTimer使用注意事项

    博客分类:
  • ISO
iso 
阅读更多

文章来源:http://www.itnose.net/detail/6043298.html 更多文章:http://www.itnose.net/type/84.html

1、初始化

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

注意:userInfo是值NSTimer携带的用户信息。

不用scheduled方式初始化的,需要手动addTimer:forMode: 将timer添加到一个runloop中。

  而scheduled的初始化方法将以默认mode直接添加到当前的runloop中.

sample:

    [NSTimer scheduledTimerWithTimeInterval:2 target:selfselector:@selector(startFindApartment:) userInfo:nil repeats:YES];

NSTimer *myTimer = [NSTimertimerWithTimeInterval:3.0 target:selfselector:@selector(timerFired:) userInfo:nilrepeats:NO];

[[NSRunLoopcurrentRunLoop] addTimer:myTimerforMode:NSDefaultRunLoopMode];

 

2、触发(启动)

当定时器创建完(不用scheduled的,添加到runloop中后,该定时器将在初始化时指定的timeInterval秒后自动触发。

 

NSTimer *timer=[NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(timeSchedule) userInfo:nil repeats:YES];

    NSRunLoop *runLoop=[NSRunLoop currentRunLoop];

    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];

    [timer fire];

可以使用-(void)fire;方法来立即触发该定时器;

3、停止

- (void)invalidate;

这个是唯一一个可以将计时器从runloop中移出的方法。

4、在多线程开发中,如果是在mainthread中使用定时器,两种初始化方法都能使用,如果是在子线程中使用定时器,只能使用方法:

 

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

 
并且启动定时器不能用fire,只能让runloop一直执行下去,sample code:

 

_timer=[NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(timeSchedule) userInfo:nil repeats:YES];

    NSRunLoop *runLoop=[NSRunLoop currentRunLoop];

    [runLoop addTimer:_timer forMode:NSDefaultRunLoopMode];

    while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);

 

分享到:
评论

相关推荐

    ios 时间定时器 NSTimer应用demo

    本教程将基于"ios 时间定时器 NSTimer应用demo",深入探讨`NSTimer`的使用方法、工作原理以及注意事项。 一、`NSTimer`简介 `NSTimer`是Foundation框架的一部分,它不是线程安全的,因此通常在RunLoop中使用以确保...

    IOS 中NSTimer定时器的使用

    IOS 中NSTimer定时器的使用 NSTimery 定时器,主要用于进行定时执行指定方法,常用场景如:获取验证码的按钮倒计时;图片轮播定时。 1 使用注意事项: 1.1 倒计时时间间隔(时间单位是秒) 1.2 指定的执行方法 1.3...

    NSTimer 使用 文档说明

    #### 六、常见问题与注意事项 1. **内存泄漏**:当持有`NSTimer`的实例时,应确保在适当的时候调用`invalidate()`方法释放资源。 2. **主线程与子线程**:默认情况下,`NSTimer`在主线程执行。如果希望在后台线程...

    NSTimer定时器

    下面将详细探讨`NSTimer`的工作原理、创建方法、常见用法以及注意事项。 ### NSTimer的工作原理 `NSTimer`并不是一个线程安全的类,它并不直接执行代码,而是将触发的消息放入运行循环(Run Loop)中。运行循环会...

    NSTimer实现的小计时器

    总结,`NSTimer`是iOS开发中的重要组件,理解其工作原理和使用场景对于优化用户体验至关重要。通过合理选择创建方法和处理屏幕滚动事件,可以确保定时器的稳定性和准确性。在实际开发中,要根据项目需求灵活运用这些...

    iOS中cell上定时器的使用

    注意事项 - 定时器的执行线程默认是RunLoop的主要模式,因此触发的方法会在线程安全的环境中执行。 - 为了保证性能,确保只在需要时启动定时器,并在不需要时及时停止。 - 避免在定时器回调中执行耗时的操作,因为...

    ios-turnTable.zip

    在"ios-turnTable.zip"的说明.txt文件中,可能包含了实现转盘动画的具体步骤和注意事项。这可能包括: 1. 创建一个 UIView 或 UIImageView 作为转盘的基础视图,并为其添加需要显示的内容。 2. 设计转盘的旋转路径...

    ios-时分秒倒计时.zip

    - **NSTimer**: iOS中,可以使用`NSTimer`创建一个周期性的任务,每隔一定时间就执行一次更新倒计时的函数。记得在不再需要倒计时的时候,要取消定时器以避免资源浪费。 - **GCD Timer**: 也可以使用Grand Central...

    ios-btn按钮动画的处理.zip

    综上所述,"ios-btn按钮动画的处理.zip"这个资料包主要探讨了如何在iOS中处理btn按钮的文字和图片动画,涉及了从基础动画到复杂自定义动画的各种技巧和注意事项。通过学习和实践,开发者可以为自己的应用增添更多...

    ios-倒计时.zip

    以上就是使用`NSTimer`在iOS中实现倒计时的基本方法和注意事项。在`ios-倒计时.zip`的`CountdownDemo`项目中,你可能能看到类似的实现,通过阅读代码和运行项目,可以更直观地理解这个过程。在实际开发中,你可以...

    ios使用定时器模拟下载的效果

    虽然这个例子中使用定时器来模拟下载效果,但在实际应用中,你可能需要结合URLSession或其他网络库进行实际的文件下载。可以使用URLSession的downloadTask方法,监听下载进度并更新定时器的进度。 5. **优化与注意...

    IOS应用源码——timer.zip

    四、注意事项 1. **内存管理**:NSTimer与目标对象之间存在强引用关系,可能导致内存泄漏。使用weak引用或使用GCD定时器可以避免这个问题。 2. **RunLoop**:理解RunLoop的工作原理非常重要,因为定时器依赖于...

    iOS GCD timer 计时器

    6. **注意事项** - GCD timer在后台运行时可能会暂停,这取决于应用的后台模式。如果需要在后台持续运行,可能需要结合其他技术,如后台模式或VoIP服务。 - 调整GCD timer的精度需谨慎,过高的精度可能导致不必要...

    ios 文字跑马灯效果实现

    四、注意事项 1. 为了保持性能,避免频繁的`setNeedsDisplay`调用,可以设定适当的刷新频率,并确保只在必要的时候重绘。 2. 考虑到文字的长度可能超过屏幕宽度,需要处理好文字超出部分的裁剪。 3. 考虑用户阅读...

    iOS学习——ScrollView图片轮播和同类控件优先级问题-代码

    7. 注意事项:为了优化性能,避免一次性加载所有图片,可以使用UIImageView的imageWithContentsOfFile:或网络加载库(如SDWebImage)实现图片的懒加载。此外,还要注意处理ScrollView的contentInset和contentOffset...

    ios-WLScrollView.zip

    10. **文档(WLScrollView.docx)**:提供的WLScrollView.docx文件可能是组件的使用指南,包含了组件的API介绍、示例代码、注意事项等,帮助开发者更好地理解和集成这个轮播图组件。 总的来说,WLScrollView是一个...

    ios-简单的轮播图.zip

    这个"ios-简单的轮播图.zip"项目为初学者提供了一个基础的轮播图实现,通过学习和实践,开发者可以进一步了解如何在iOS中使用UIScrollView和UICollectionView来创建动态、交互式的用户界面。同时,这也是一个提升...

    ios图片轮播器

    7. **注意事项** - 记得在不再使用轮播器时,释放资源,防止内存泄漏。 - 考虑到不同设备的屏幕尺寸,确保图片适配良好。 - 在图片加载过程中,提供适当的加载提示。 总的来说,"ios图片轮播器"是一个方便的工具...

Global site tag (gtag.js) - Google Analytics