如何登录微信公众号管理平台,邯郸网站建设优化,wordpress邮箱非必填,工地包工接活十大平台在iOS开发中#xff0c;线程的创建与管理已经被Apple进行了很好的封装#xff0c;但是在开发者实际开发中会滥用GCD,导致整个代码混乱不堪#xff0c;因此在这里需要对iOS开发中的多线程开发进行整理。
1. 主线程完成耗时操作#xff0c;会导致UI卡顿#xff0c;因此耗时… 在iOS开发中线程的创建与管理已经被Apple进行了很好的封装但是在开发者实际开发中会滥用GCD,导致整个代码混乱不堪因此在这里需要对iOS开发中的多线程开发进行整理。
1. 主线程完成耗时操作会导致UI卡顿因此耗时操作要以子线程的运行方式来运行 在iOS的Framework Controller中重载的与UI相关的方法都是在主线程中完成的因此如果有需要从网络下载数据的方法需要切换到子线程中进行并且在数据下载完成后需要更新UI这个时候又需要在主线程中更新UI
2.创建Thread方法 1pthread方法 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.pngwaitUntilDone: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
默认主队列为串行执行
默认的全局队列为并行执行