UI-设置定时器的两种方法(NSTimer)

//方法一:
    //创建定时器
    NSTimer *timer=[NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(nextCilcked) userInfo:nil repeats:YES];
    //利用消息循环来开启定时器
    //创建消息循环
    NSRunLoop *runLoop =[NSRunLoop currentRunLoop];
    //Mode:1: NSDefaultRunLoopMode;
    //     2: NSRunLoopCommonModes ;
    //将定时器添加到到runLoop
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
    
    //方法二:
   //创建定时器
    NSTimer *timer1 =[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextCilcked) userInfo:nil repeats:YES];
    //开启定时器
    [timer1 setFireDate:[NSDate distantPast]];
    //暂停定时器
    [timer setFireDate:[NSDate distantFuture]];
    
    //取消定时器(永久性停止)
    [timer invalidate];
    //释放计时器
    timer = nil;
    
}
-(void)nextCilcked
{
 
    NSLog(@"timer执行中......");
}

时间: 2024-10-11 05:24:59

UI-设置定时器的两种方法(NSTimer)的相关文章

suse下设置IP的两种方法

/Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2 释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2 第二种SUSE Linux IP设置方法 在suse操作系统中每个网卡都有一个配置文件,在/etc/sysc

旧文备份:利用一个定时器实现多个虚拟定时器的两种方法

固定周期法 使用一个硬件定时器进行固定周期(比如1ms)定时,用一个结构体数组作为软定时器描述表,数组的结构体数就是最大虚拟定时器的数量,每个结构体的成员都包括虚拟定时器状态(空闲.激活.运行.超时触发.周期触发).定时值(换算成定时周期数,例如1ms的硬件定时周期,现进行125ms的定时,定时值就是125).标识ID和回调函数等:用一个变量作为定时周期计数器,每次进入定时中断,重置定时器,扫描结构体数组中的每个成员结构体,对定时值做减一操作,然后判断该定时值是否为0,是则判定该值对应的虚拟定时

Kettle_设置变量的两种方法

一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值.       主作业添加的[设置变量]针对的是所有流程,如果需要运行某个在作业,就需要将其引用的变量值改为常量才能运行,想当年麻烦,本文介绍两种方法规避该问题 方法一:在子作业中添加设置变量流程 下图中table changlog exists?流程使用变量${cl},但是设置${cl}变量的值在主作业执行,所以执行本作业时会报错  解决方法:在

php设置时区的两种方法

php5后都要自己设置时区,要么修改php.ini的设置,要么在代码里修改. 在PHP.INI中设置时区 date.timezone = PRC 在代码中设置时区 1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai'   亚洲/上海 2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆” 3 date_default_timezone

Android更新UI的两种方法——handler与runOnUiThread()

在Android开发过程中,常需要更新界面的UI.比如网络请求操作.一些耗时操作都不能放在UI线程中运行的,需要放在子线程,而子线程又不能更新UI界面,这是我们需要引入一个Handler,消息处理机制.更新UI是要主线程(UI线程)来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面显示常会报错.抛出异常:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that create

js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>

WPF多线程UI更新——两种方法

WPF多线程UI更新--两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小心就会有这个现象.在WPF中,如果不是用多线程的话,例如单线程应用程序,就是说代码一路过去都在GUI线程运行,可以随意更新任何东西,包括UI对象.但是使用多线程来更新UI就可能会出现以上所说问题,怎么解决?本文章提供两个方法:Dispatcher(大部分人使用),T

Android 更新UI的两种方法——handler和runOnUiThread() - $firecat的代码足迹$ - 博客频道 - CSDN.NET

文章来源:http://www.2cto.com/kf/201302/190591.html Android 更新UI的两种方法——handler和runOnUiThread() 在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面显示常会报错.抛出异常:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread th

设置一个DIV块固定在屏幕中央(两种方法)

设置一个DIV块固定在屏幕中央(两种方法) 方法一: 对一个div进行以下设置即可实现居中. <style> #a{ position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px; margin: auto; } </style> <!doctype html> <html lang="zh-cn"> <head> <meta charset="UT