保证任务在主线程中执行(NSObject+GCD.h)
来源:互联网 发布:火狐兼容的js报表打印 编辑:程序博客网 时间:2024/05/16 15:26
.h
@interface NSObject (GCD)-(void) asyncTask:(dispatch_block_t)block;//-(void) syncTask:(dispatch_block_t)block;-(void) syncTaskOnMain:(dispatch_block_t)block;-(void) asyncTask:(dispatch_block_t)block after:(NSTimeInterval)delay;//-(void) syncTask:(dispatch_block_t)block after:(NSTimeInterval)delay;-(void) syncTaskOnMain:(dispatch_block_t)block after:(NSTimeInterval)delay;-(void) asyncTask:(dispatch_block_t)block returnOnMain:(dispatch_block_t)block2;@endvoid safe_dispatch_main_sync(dispatch_block_t block);void safe_dispatch_main_async(dispatch_block_t block);
.m
@implementation NSObject (GCD)-(void)asyncTask:(dispatch_block_t)block { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block);}//-(void)syncTask:(dispatch_block_t)block {// dispatch_async(dispatch_get_current_queue(), block);//}-(void)syncTaskOnMain:(dispatch_block_t)block { dispatch_async(dispatch_get_main_queue(), block);}-(void) asyncTask:(dispatch_block_t)block after:(NSTimeInterval)delay { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block);}//-(void) syncTask:(dispatch_block_t)block after:(NSTimeInterval)delay {// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC),// dispatch_get_current_queue(), block);//}-(void) syncTaskOnMain:(dispatch_block_t)block after:(NSTimeInterval)delay { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), block);}-(void)asyncTask:(dispatch_block_t)block returnOnMain:(dispatch_block_t)block2 { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ block(); dispatch_async(dispatch_get_main_queue(), block2); }); }@endvoid safe_dispatch_main_sync(dispatch_block_t block) { if ([NSThread isMainThread]) { block(); } else { dispatch_sync(dispatch_get_main_queue(), block); }}void safe_dispatch_main_async(dispatch_block_t block) { if ([NSThread isMainThread]) { block(); } else { dispatch_async(dispatch_get_main_queue(), block); }}
0 0
- 保证任务在主线程中执行(NSObject+GCD.h)
- 执行主线程之后又执行了几个子线程,保证子线程执行完成在结束主线程
- Java 如何在Main函数中,执行完异步任务后才退出主线程
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- 【Linux】Linux中借助lockf机制,保证只有一个任务进程在执行
- android异步任务完成后再执行主线程任务
- GCD:dispatch_sync会在当前线程中执行派发到其他队列的任务
- Swift 3.0 在主线程执行代码
- android中network的连接不能在直接在主线程中执行
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- NSObject.h解(一)
- NSObject.h
- NSObject.h
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- 关于在子线程中在run方法执行完之后通知主线程进行操作的方法。(Toast在子线程中无法使用)
- 浙江大学PAT_甲级_1096. Consecutive Factors (20)
- ppt倒计时器制作方法
- Qt中对sqlite加密
- linux 上传文件夹
- ASP.net中TextBoxLabel等控件渲染的不同状态
- 保证任务在主线程中执行(NSObject+GCD.h)
- HDU 5400 Arithmetic Sequence(数学)——多校练习9
- C++函数调用详解
- 从头到尾彻底理解KMP
- iOS项目开发实战——自定义圆形进度提示控件
- Load Asset Bundle in Editor
- UIViewController 推出另外一个半透明的UIViewController
- 软件项目管理(CMMI成熟度)实践——之系统测试
- 黑马程序员_TCPUDP