IOS OC 多任务定时器 NSRunLoop 管理 NSTimer
下面有两种做法
1.使用日期组件 NSDateComponents
2.使用NSString 生成一个日期
// 创建一个日历对象
NSCalendar *calendar = [NSCalendar currentCalendar];
// 创建日期组件
NSDateComponents *dc = [[NSDateComponents alloc]init];
// 设置当前时间
[dc setCalendar: calendar];
[dc setYear: 2014];
[dc setMonth: 4];
[dc setDay: 9];
[dc setHour:21];
[dc setMinute:26];
[dc setSecond:0];
NSString *dateStr = @"2014-04-0921:38:00";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat=@"yyyy-MM-ddHH:mm:ss";
NSDate *schuduleNate = [dc date];
NSDate *schuduleNate2 = [formatter dateFromString:dateStr];
NSDate *dateNow = [NSDate date];
// 计算时间差
NSTimeInterval num = [schuduleNate2 timeIntervalSinceDate:dateNow];
NSLog(@"%f 后开始执行任务",num);
// 任务池
NSRunLoop *mainLoop = [NSRunLoop currentRunLoop];
//
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:num target:self selector:@selector(scheduleTask) userInfo:nil repeats:NO];
NSTimer *timer2 = [NSTimer scheduledTimerWithTimeInterval:num+3 target:self selector:@selector(scheduleTask) userInfo:nil repeats:NO];
// 添加到任务池中
[mainLoop addTimer:timer forMode:NSDefaultRunLoopMode];
[mainLoop addTimer:timer2 forMode:NSDefaultRunLoopMode];
[mainLoop run];
输出信息
2014-04-09 21:37:54.289 WeChat[1810:60b] 5.710526后开始执行任务
2014-04-09 21:38:00.001 WeChat[1810:60b] do some thing
2014-04-09 21:38:03.001 WeChat[1810:60b] do some thing
IOS OC 多任务定时器 NSRunLoop 管理 NSTimer的更多相关文章
- iOS三种定时器的用法NSTimer、CADisplayLink、GCD
一,NSTimer //创建方式1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector: ...
- iOS中的定时器
据我所知,iOS中的定时器有两种.一个叫NSTimer,一个叫CADisplayLink.还有一种是使用GCD,不常用,这里就不介绍了. 下边说下两个定时器分别得用法: =============== ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- ios+oc面试题
ios+oc面试题 浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...
- OC学习10——内存管理
1.对于面向对象的语言,程序需要不断地创建对象.这些对象都是保存在堆内存中,而我们的指针变量中保存的是这些对象在堆内存中的地址,当该对象使用结束之后,指针变量指向其他对象或者指向nil时,这个对象将称 ...
- OC开发系列-内存管理
概述 移动设备的内存极其有限,每个app所有占用的内存是有限的.当app所占用的内存比较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间. 任何集成了NSObject的对象都需要手动进行 ...
- iOS OC语言原生开发的IM模块--RChat
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...
- (六)整合 QuartJob ,实现定时器实时管理
整合 QuartJob ,实现定时器实时管理 1.QuartJob简介 1.1 核心API 2.SpringBoot整合QuartJob 2.1 项目结构 2.2 定时器配置 2.3 定时器管理工具 ...
- iOS - OC NSTimer 定时器
前言 @interface NSTimer : NSObject 作用 在指定的时间执行指定的任务. 每隔一段时间执行指定的任务. 1.定时器的创建 当定时器创建完(不用 scheduled 的,添加 ...
随机推荐
- Kettle6.0安装及问题总结-白痴教程
1.安装JDK 配置java环境变量 2.安装KETTLE: 官方下载地址:http://community.pentaho.com/projects/data-integration/ 下载完后,解 ...
- uploadify参数
$(document).ready(function() { $("#file_upload").uploadify({ //开启调试 'debug' : false, //是否自 ...
- 处理GitHub不允许上传大于100M文件问题
第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你自己项目的路径) 第二步输入命令 git rm --cached/Users/Dora/Desktop/ ...
- Flexbox,更优雅的布局
在设计的眼中,排版的操作是一件很简单的事情,靠左.置中.靠右,我只要点一下,所有元素,就会乖乖的到指定的位置. 但到了前端在排版的实现上,就不是这样了. 我们常常得用一堆其实本来不是这样用的属性来做 ...
- IOS 学习 开发 自定义 UINavigationController 导航
文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootv ...
- C# ADO.NET 连接Sybase 数据库
using Sybase.Data.AseClient;//反编译修改后的DLL public class SybaseHelper { public AseConnection con; publi ...
- linux配置网卡绑定
1.确定好要绑定的那两个网口 我这边要绑定的是两个业务口 em2.em3 2.配置ifcfg-bond0.em2.em3 3.修改配置文件/etc/modprcode.d/disk.conf 底部添 ...
- Add Two Numbers (c#)
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- 关于lwip移植到ucsos-ii平台的遇到的问题(一)
移植的步骤参照<Day_Day_Up笔记之uCOS-II_LwIP_在_STM32F107_上移植>,<uCOS平台下的LwIP移植笔记>,<嵌入式网络那些事>. ...
- Type.GetType()反射另外项目中的类时返回null的解决方法
项目1:ProjectA namespace ProjectA { public class paa { .... } } Type.GetType("paa")返回null Ty ...