IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget

转载 2016年05月30日 19:48:43
@interface NSObject (NSDelayedPerforming)  
  
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes;  
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;  
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument;  
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;  
  
@end  


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


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


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


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

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



相关文章推荐

执行延迟IOS关于取消延迟执行函数的种种

写这篇博客要主是加深自己对执行延迟的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。 @interface NSObject (NSDelayedPerforming) - (vo...

[绍棠] performSelector:withObject:afterDelay: 延迟执行

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; ...

函数调用过程种种细节分析

  • 2010年02月08日 16:20
  • 518KB
  • 下载

iOS performSelector

在项目中,常常用到performSelectorXXX之类的方法,而且有很多类似方法;今天就来召集一下! 1.performSelectorOnMainThread:withOb...

iOS 【消息处理 performSelector】

消息处理之performSelector

深入分析iOS问题-performSelector:onThread:withObject:waitUntilDone

今天检查内存泄露的问题,发现误用系统API的问题。导致内存泄露。这个问题还是比较常见的,我觉得还是记下了,分享给大家...

iOS多线程中performSelector: 和dispatch_time的不同

iOS多线程中performSelector: 和dispatch_time的不同 http://www.2cto.com/kf/201408/329546.html iOS中timer相关的延...

ios的消息传递—— performSelector

Objective-C中调用函数的方法是消息传递,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候...

iOS笔记之--消息处理之performSelector

performSelector和直接调用方法的区别 performSelector: withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明...

ios之"performSelector may cause a leak because its selector is unknown"警告原因及其解决办

一 问题描述 问题描述项目中使用到了从字符串创建选择器,编译时发现警告:”performSelector may cause a leak because its selector is unkno...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
举报原因:
原因补充:

(最多只允许输入30个字)