GCD
来源:互联网 发布:poi数据 编辑:程序博客网 时间:2024/04/18 14:56
GCD大神的总结
Apple inc
1. 关于Block
void (^loggerBlock)(void); // 声明一个Block loggerBlock =^{ //add your code } ;
2、关于变量
在block中可以使用定义程序块可以访问的变量,但此时Block中的变量只是定义程序块可以访问的变量的一个COPY ,若要共享定义程序块可以访问的变量,此时需要使用__block关键字对变量进行修饰,如: __block NSString *firstResult;3,使用dispatch_group_async把block加入到队列中运行
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//add your code
});
4、对于Block中的代码不能操作UI线程,否则就违背了线程安全原则,可以使用下面的方式对UI进行操作
dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSString *fetchedData =[self fetchSomeThingFromServer]; ………… dispatch_async(dispatch_get_main_queue(), ^{ //add your UI code }); }
5、关于Block并发,使用dispatch_group_t,如下所示:
dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSString *fetchedData =[self fetchSomeThingFromServer]; NSString *processedData = [self processData:fetchedData]; __block NSString *firstResult; __block NSString *secondResult; dispatch_group_t group = dispatch_group_create(); //处理并发1 dispatch_group_async(group,dispatch_get_global_queue(0,0), ^{ firstResult = [[self calculateFirstResult:processedData] retain]; }); //处理并发1 dispatch_group_async(group,dispatch_get_global_queue(0,0), ^{ secondResult = [[self calculateSecondResult:processedData] retain]; }); //dispatch_group_notify指定的是该组所有并发块执行完后执行的代码 dispatch_group_notify(group,dispatch_get_global_queue(0, 0),^{ NSDate *endTime =[NSDate date]; NSLog(@"%f------",[endTime timeIntervalSinceDate:startTime]); [firstResult release]; [secondResult release]; }); });
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- 关于LINUX系统概念的上的格式化
- Cassandra部署策略
- c++中bool数组与bitset,vector<bool>的使用与占用空间大小对比
- 《UNIX环境编程》第十六章--网络IPC:套接字
- What should I do about my early life crisis?
- GCD
- c#读取数组中获取最大最小值方法
- tomcat7.0怎样安装admin,进而配置Datasource
- 链表逆置
- 程序编译后运行时的内存分配
- Thrift 是什么?
- Jquery 插件 方法名意义
- C/C++ 笔试、面试题目大汇总
- ibatis的CRUD代码