NSRunLoop && NSTimer

时间:2023-01-24 19:26:45

新的一年的开始,希望大家一切越来越好,越来越开心快乐!!!

定时器及运行循环

  • NSRunLoop是iOS消息机制的处理模式
  • NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。 通过所有的“消息”都被添加到了NSRunLoop中去,而在这里这些消息并分为“input source”和“Timer source” 并在循环中检查是不是有事件需要发生,如果需要那么就调用相应的函数处理 定时器(NSTimer)

RunLoopMode(运行循环模式)

1.NSDefaultRunLoopMode 这是大多数操作中使用的模式。
2.NSConnectionReplyMode 该模式用来监控NSConnection对象。你通常
不需要在你的代码中使用该模式。
3.NSModalPanelRunLoopMode Cocoa使用该模式来标识modalpanel(模
态面板)的事件。
4.NSEventTracking(UITrackingRunLoopMode) Cocoa使用该模式来处
理用户界面相关的事件。
5.NSRunLoopCommonModes 这是一组可配置的通用模式。将input
sources与该模式关联则同时也将input sources与该组中的其它模式进行了
关联。对于Cocoa应用,该模式缺省的包含了default,modal以及event tracking模式。

一个常见的问题就是,主线程中一个NSTimer添加在default mode中, 当界面上有一些scroll view的滚动频繁发生导致run loop运行在UItraking mode中, 从而这个timer没能如期望那般的运行。 所以,我们就可以把这个timer加到NSRunLoopCommonModes中来解决(iOS中)。 定时器是让程序定时执行某一个方法:

定时器(NSTimer)

/*
 * scheduledTimerWithTimeInterval: 间隔时间(秒)
 * target: 所要应用定时器的对象
 * selector: 调用的方法
 * userInfo: 所要传递的参数
 * repeats: 是否重复调用
 */
 
[NSTimer scheduledTimerWithTimeInterval:1 
target:self selector:@selector(timerAction:) userInfo:@"参数" repeats:YES];
望亲爱的大家都能学习到一点东西!!!欢迎收藏!!!
 

NSRunLoop && NSTimer的更多相关文章

  1. NSRunLoop(来自官方文档)

    The NSRunLoop class declares the programmatic interface to objects that manage input sources. An NSR ...

  2. iOS NSRunloop

    什么是Runloop Runloop即运行循环.为什么你的APP放在那里不去动它,在某个时间点去操作它,它还会给你反馈.就是因为Runloop的存在. 总结一下,因为Runloop的存在,保证你的程序 ...

  3. IOS OC 多任务定时器 NSRunLoop 管理 NSTimer

    下面有两种做法 1.使用日期组件 NSDateComponents 2.使用NSString 生成一个日期 //  创建一个日历对象 NSCalendar *calendar = [NSCalenda ...

  4. IOS开发中NSRunloop跟NSTimer的问题

    在Windows时代,大家肯定对SendMessage,PostMessage,GetMessage有所了解,这些都是windows中的消息处理函数,那对应在ios中是什么呢,其实就是NSRunloo ...

  5. NSTimer、 NSTask、 NSThread 和 NSRunloop 之间的区别

    NSTimer是一个计时器对象,方法调用在对未来的选择对象. NSThread是一个线程类. 也就是创建一个线程. NSTask类是一个过程,一种方式运行程序从您的其他程序. NSOperation是 ...

  6. 关于NSRunLoop和NSTimer的深入理解

    一.什么是NSRunLoop NSRunLoop是消息机制的处理模式 NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠 NS ...

  7. NSTimer与NSRunLoop的关系分析

    NSTimer与NSRunLoop的关系分析 发表于 2013 年 6 月 27 日 由 bluev | 6 次浏览 最近关于NSTimer和NSRunLoop的关系,做了一个小试验.代码地址:htt ...

  8. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  9. Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全 (转)

    目前在 iOS 和 OS X 中有两套先进的同步 API 可供我们使用:NSOperation 和 GCD .其中 GCD 是基于 C 的底层的 API ,而 NSOperation 则是 GCD 实 ...

随机推荐

  1. bootstrap快速搭建属于自己的后台模板库

    不论做什么项目,我们都以快速搭建为主,设计师固然重要,但是,我们前端开发的也必须能给出自己以前做过什么样的模板,自己收藏的模板,或者我们弹框的形式,我的提示框的形式,我用的下拉框的插件,日历的插件,我 ...

  2. Arduino入门笔记【1】

    刚刚接触这个东西只知道这是类似于单片机的开发板,可以做一些单片机实现或者不能实现的东西,但是比单片机要简单得多. Arduino到底是什么? *上的描述是:Arduino是一块开发板的微控制器和 ...

  3. 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法

    配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...

  4. [BZOJ1024] [SCOI2009] 生日快乐 (搜索)

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋 ...

  5. 加载xib文件,如果想在初始化的时候就添加点东西就重载-(id)initWithCoder:(NSCoder *)aDecoder

    - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { self.cl ...

  6. NGS NGS ngs(hisat,stringtie,ballgown)

    NGS ngs(hisat,stringtie,ballgown) #HISAT (hierarchical indexing for spliced alignment of transcripts ...

  7. tkinter获取键盘输入

    tkinter获取键盘输入

  8. Xcode常见设置

    1.设置主题和字体大小

  9. Hyperledger Fabric 开发环境搭建 centos7系统

    一.安装GO语言 下载最新版的go 打开Terminal,输入命令(以下命令都是以root管理员的角色进行的) su 输入密码:***** wget https://storage.googleapi ...

  10. phpmailer邮件类

    <?php/** * 邮件类 * Enter description here ... * @author df * Mail::getMail()->sendMail(); * */cl ...