GCD之全局、主线程
来源:互联网 发布:卧蚕阿姨的淘宝店 编辑:程序博客网 时间:2024/06/10 06:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-(
NSString
*)fetchData
{
[
NSThread
sleepForTimeInterval:1];
return
@
"Hello world"
;
}
-(
NSString
*)firstCast:(
NSString
*)data
{
[
NSThread
sleepForTimeInterval:2];
return
[data uppercaseString];
}
-(
NSString
*)secondCast:(
NSString
*)data
{
[
NSThread
sleepForTimeInterval:3];
return
[data stringByReplacingOccurrencesOfString:@
"0"
withString:@
"o"
];
}
-(
NSInteger
)thrid:(
NSString
*)data
{
[
NSThread
sleepForTimeInterval:4];
return
[data length];
}
1.在View中放置一个UIButton按钮和一个UITextView,在按钮点击事件中调用上面的方法
2.按钮执行方法顺序如下:
1
2
3
4
5
6
7
8
- (
IBAction
)btnclick:(
id
)sender {
//__block 声明变量可在block中修改 否则只有只读权限
__block
int
a=10;
NSDate
*startTiem=[
NSDate
date];
//对于全局队列(并行队列) 声明时第一个参数有三种:四种对应的是不同的全局队列 第二个参数目前未使用 始终为0
//1.DISPATCH_QUEUE_PRIORITY_DEFAULT
//2.DISPATCH_QUEUE_PRIORITY_HIGH
//3.DISPATCH_QUEUE_PRIORITY_LOW <br> //4.DISPATCH_QUEUE_PRIORITY_BACKGROUND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
//dispatch_async 开启异步线程
dispatch_async(queue, ^{
NSString
*fetchstring= [
self
fetchData];
NSString
*firststring=[
self
firstCast:fetchstring];
NSString
*secondstring=[
self
secondCast:firststring];
NSInteger
length =[
self
thrid:fetchstring];
NSDate
*endtime=[
NSDate
date];
//对于UI的更新获取值都在主线程中 此时要用主线程来更新 主 线程是串行队列
dispatch_async(dispatch_get_main_queue(), ^{
self
.textview.text=secondstring;
});
a=9;
//若未在声明变量时使用__block 时将会报错不能编译
NSLog
(@
"%@"
,[
NSString
stringWithFormat:@
"%ld %@"
,length,secondstring]);
NSLog
(@
"%f"
,[endtime timeIntervalSinceDate:startTiem]);
});
}
3.输出结果
0 0
- GCD之全局、主线程
- GCD之 串行队列,并行队列,全局队列,主线程队列
- GCD之队列的选择和与主线程之间的通信
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- GCD 源码分析之全局线程优先级
- GCD练习 创建子线程 其中回调主线程
- IOS学习 GCD 基础 串行/并行/主线程、同步/异步
- iOS GCD子线程调用主线程刷新
- iOS GCD子线程调用主线程刷新
- UI 实现多线程方式之四 GCD之全局队列
- Android之 UI主线程
- Android之 UI主线程
- 多线程之杀死主线程。。
- Win32多线程之主线程
- GCD-异步全局队列
- 多线程之主线程与子线程
- 安卓主线程之旅
- hdu1016
- java环境变量设置
- 51nod 1091 线段的重叠(贪心)
- NYOJ 有趣的数
- 牛客网 买帽子
- GCD之全局、主线程
- 关于上拉与下拉电阻
- SSH免密码登录
- LeetCode刷题(C++)——Construct Binary Tree from Preorder and Inorder Traversal(Normal)
- OC Block网上转载
- 黑苹果--虚拟机篇之VMware 安装MAC OSX 10.10
- CSS长度单位:vh、vw、vmin、vmax、em、rem、ex、ch、px
- BZOJ 4813 [Cqoi2017]小Q的棋盘
- 关于游戏开发的片段