IOS dispatch_after的执行和取消
来源:互联网 发布:js获取table高度 编辑:程序博客网 时间:2024/05/20 00:39
// dispatch_after的执行
static PDDelayedBlockHandle perform_block_after_delay(CGFloat seconds, dispatch_block_t block) { if (block == nil) { return nil; } __block dispatch_block_t blockToExecute = [block copy]; __block PDDelayedBlockHandle delayHandleCopy = nil; PDDelayedBlockHandle delayHandle = ^(BOOL cancel) { if (!cancel && blockToExecute) { blockToExecute(); } // Once the handle block is executed, canceled or not, we free blockToExecute and the handle. // Doing this here means that if the block is canceled, we aren't holding onto retained objects for any longer than necessary. #if !__has_feature(objc_arc) [blockToExecute release]; [delayHandleCopy release]; #endif blockToExecute = nil; delayHandleCopy = nil; }; // delayHandle also needs to be moved to the heap. delayHandleCopy = [delayHandle copy]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (nil != delayHandleCopy) { delayHandleCopy(NO); } }); return delayHandleCopy; }
// dispatch_after的取消
static void cancel_delayed_block(PDDelayedBlockHandle delayedHandle) { if (nil == delayedHandle) { return; } dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ delayedHandle(YES); }); }
@property (nonatomic, assign) PDDelayedBlockHandle delayedBlockHandle;// 执行_delayedBlockHandle = perform_block_after_delay(秒数, ^{ // 执行内容 }); // 取消cancel_delayed_block(_delayedBlockHandle);
0 0
- IOS dispatch_after的执行和取消
- IOS dispatch_after的取消
- iOS里延迟的执行和取消
- dispatch_after-延迟执行的操作使用方法
- iOS Swift下dispatch_after的写法
- [IOS]dispatch_after;dispatch_apply;dispatch_
- 谈谈iOS延迟调用--对比NSTimer、performSelector和dispatch_after
- 执行延迟IOS关于取消延迟执行函数的种种
- dispatch_after的使用及iOS延时实现方法
- 方法延迟执行的调用和取消
- IOS 关于延迟performselector()和取消延迟执行函数
- dispatch_after 的使用方法
- iOS 取消方法延迟执行
- Swift dispatch_after替代ios performSelector
- iOS关于取消延迟执行函数的介绍
- 取消线程的执行
- [ios]延迟执行方法,取消执行方法
- ios 本地推送的添加和取消
- Java内部类的使用小结
- 关于C++中声明,定义,初试化的理解
- 鼠标悬停和离开显示不同的图片
- 命令表
- StringUtils join使用
- IOS dispatch_after的执行和取消
- 鸟哥的linux私房菜学习笔记《三》重启与关机
- shell数组简单实用
- Dev c++一些调试方法
- iOS 二进制流转化
- 一笔画问题 【欧拉回路】+【dfs】
- 109. Convert Sorted List to Binary Search Tree(unsolved)
- 怎么解决tomcat占用8080端口问题图文教程 端口被占用
- Android开发控件尺寸的测量