iOS多线程理解
来源:互联网 发布:云服务器 8000 端口 编辑:程序博客网 时间:2024/05/22 10:05
在iOS开发中,线程的创建与管理已经被Apple进行了很好的封装,但是在开发者实际开发中会滥用GCD,导致整个代码混乱不堪,因此在这里需要对iOS开发中的多线程开发进行整理。
1. 主线程完成耗时操作,会导致UI卡顿,因此耗时操作要以子线程的运行方式来运行
在iOS的Framework Controller中重载的与UI相关的方法都是在主线程中完成的,因此如果有需要从网络下载数据的方法,需要切换到子线程中进行,并且在数据下载完成后需要更新UI,这个时候又需要在主线程中更新UI
2.创建Thread方法
(1)pthread方法
pthread是操作系统C语言接口,非常底层,一般很少使用
pthread_t
pthread_create
(2)NSThread方法
NSThread是IOS框架封装的线程对象,需要自己管理线程的生命周期
一个线程一般分为:创建, 就绪, 运行,挂起,消亡
create ready running suspend dead
创建一个NSThread的方法:
NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(downLoad:)object:@"http://1.png"];
[thread start]
[NSThreaddetachNewThreadSelector:@selector(downLoad:)toTarget:selfwithObject:@"http://2.png"];
[self performSelector:@selector(downLoad:) onThread:[NSThread currentThread] withObject:@"http://3.png"waitUntilDone:NO];
[self performSelectorInBackground:@selector(downLoad:) withObject:@"http://3.png"];
(3)线程安全
线程安全 加锁-一定要对片段代码进行枷锁
@synchronized(self) {
}
(4)线程间的通信
在子线程中进行加载网络数据
在主线程中进行刷新UI
1. GCD
Dispatch_queue_t
Dispatch_get_global_queue
Dispatch_queue_create();
在主线程接受用户的输入事件
在线程执行耗时下载操作
然后再回到主线程中更新UI
默认主队列为串行执行
默认的全局队列为并行执行
- iOS多线程理解
- iOS 多线程的理解
- ios 多线程的理解
- iOS多线程理解
- ios多线程理解
- 如何理解iOS多线程
- 理解iOS多线程
- ios-多线程的理解
- iOS 多线程自己的理解
- iOS 多线程的一些理解
- iOS多线程理解告别生硬
- iOS 【多线程的理解 1】
- 【iOS开发】 多线程理解与应用
- iOS-多线程之NSOperation实例和理解
- iOS-多线程之GCD实例和理解
- 对多线程的理解,IOS中有几种实现多线程的方法
- iOS开发中GCD在多线程方面的理解
- iOS多线程GCD NSThread的使用和理解
- postgresql基本语法
- android开发之实现动态打勾效果(DrawHookView)
- dpi ppi dip
- JavaScript DOM 二
- 多线程初探(四)
- iOS多线程理解
- 有效使用目标的运动特征
- JVM并发机制的探讨——内存模型、内存可见性和指令重排序
- GCD多内核线程-之dispatch queue深入浅出
- linnx系统下修改vim配色方案
- ButterKnife参考
- spring mvc实现Restful返回xml格式数据
- oracle数据库乱码问题解决
- 三层交换机多VLAN之间DHCP配置