本文非本人撰写
 
 
  1. @interface NSObject (NSDelayedPerforming)
  2. - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes;
  3. - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
  4. + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument;
  5. + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;
  6. @end

最近看到大家对cancelPreviousPerformRequestsWithTarget不能取消带参数的
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
情况,写了一点点代码调试了一下,发现如果是带参数,那取消时的参数也要一致,否则不能取消成功。
开始延迟执行:

  1. [self performSelector:@selector(didRuninCurrModel:) withObject:[NSNumber numberWithBool:YES] afterDelay:3.0f];
  2. [self performSelector:@selector(didRuninCurrModelNoArgument) withObject:nil afterDelay:3.0f];

假如在三秒内执行以下取消方法,则结果分别为:

  1. [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didRuninCurrModel:) object:[NSNumber numberWithBool:YES]];//可以取消成功。
  2. [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didRuninCurrModel:) object:[NSNumber numberWithBool:NO]];//不能取消成功。参数不匹配
  3. [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didRuninCurrModel:) object:nil];//不能取消成功。参数不匹配
  4. [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didRuninCurrModelNoArgument) object:nil];//可以成功取消
  5. [NSObject cancelPreviousPerformRequestsWithTarget:self];//可以成功取消全部。
  6. [[self class] cancelPreviousPerformRequestsWithTarget:self];//可以成功取消全部。

代码下载地址:http://download.csdn.net/detail/samuelltk/5481327

IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget的更多相关文章

  1. iOS 设置 延迟执行 与 取消延迟执行 方法 以及对 run loop 初步认识

    之前开发过程中经常会有需求会使用 NSObject中的"performSelector:withObject:afterDelay:"做方法延迟执行的处理, 但是 还没有什么地方需 ...

  2. ios开发之-- 延迟执行方法

    延迟执行的几种方法,分享一下. 1.performSelector(NSObject)方法  2.NSTimer方法  3.GCD方法  4.sleep(NSThread)方法 1.performSe ...

  3. iOS定时器、延迟执行

    1.通用方式(并不是实时调用并且会卡顿): // 一般用于更新一些非界面上的数据 [NSTimer scheduledTimerWithTimeInterval:时间间隔 target:self se ...

  4. 实现PC延迟执行函数

    头文件内容: #pragma once typedef function<void ()> DelayClickHandler; typedef void (*pDelayFun)(); ...

  5. js自定义延迟执行函数

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. iOS中延迟执行和取消的几种方式

    公用延迟执行的方法: - (void)delayMethod { NSLog(@"delayMethodEnd"); } 方法一.performSelector 方法 1.延迟执行 ...

  7. iOS开发中方法延迟执行的几种方式

    概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSe ...

  8. js中的延迟执行和定时执行

    在js中,延迟执行函数有两种,setTimeout和setInterval,用法如下: function testFunction(){Console.log('hovertree.com');} s ...

  9. 浅谈iOS开发中方法延迟执行的几种方式

    Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (vo ...

随机推荐

  1. python合并多个csv文件并去重

    #coding=utf-8 import os import pandas as pd import glob def hebing(): csv_list = glob.glob('*.csv') ...

  2. 转:java 进阶之路

    转: https://www.zhihu.com/question/39139518 一.基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:// ...

  3. DevExpress 15.1.sln

    Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio VisualStudioVersion = 14 ...

  4. linux下统计程序/函数运行时间(转)

    一. 使用time 命令 例如编译一个hello.c文件 #gcc hello.c -o hello 生成了hello可执行文件,此时统计该程序的运行时间便可以使用如下命令 #time ./hello ...

  5. shell脚本监控调度器/proc进程是否运行(嵌套循环)

    /proc/<pid>/schedstat $/schedstat First: , Second:time spent waiting on a runqueue,这个值与上面的se.w ...

  6. php中的可变变量、可变函数、匿名函数

    1.可变变量 简而言之:获取一个普通变量的值作为这个可变变量的变量名. 如: $a = "hello"; $$a = " world"; /* $a 的值为&q ...

  7. zabbix proxy 安装

    ### 前期准备 ```   # 直接yum安装 ```   ### 安装 ``` # 安装 sqlite zabbix-proxy-sqlite3 yum -y install sqlite sql ...

  8. atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 a--g v1 q31.xlsx

    atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 a--g v1 q31.xlsx 1  Mizian陕北方言 english英语 spain西班牙语 cantonese粤 ...

  9. Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package

    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package 1. 统计的lib jar 列表1 2. Code3 3. 常用包名按找字母排序(2000个)4 ...

  10. [ElasticSearch] 空间搜索 (一)

    依据索引文档的地理坐标来进行搜索.Elasticsearch 也可以处理这种搜索.--空间搜索 一.为空间搜索准备映射 PUT my_space_test { "mappings" ...