ios多线程初步,主线程刷新UI

在iOS开发中,遇到UIActivityIndicatorView未显示的问题,发现原因是UI操作未在主线程进行。通过学习多线程,尤其是使用NSThread创建新线程处理数据计算,将UI更新操作回调到主线程,解决了问题。NSThread虽然简单易用,但可能不及GCD高效,不过对于此场景已经足够。

去研究一下iOS多线程的起因是自己程序里用了一个等待指示器UIActivityIndicatorView,俗称小菊花。但是在给顶层ViewController用addsubview加入这个控件并使转动时,屏幕并没有出现菊花。经过好一番调试都没找到原因。去网上搜索良久注意到这种subview没有显示的原因之一是UI操作没有放在主线程,但我只用了一个主线程,我立刻想到可能是我的主线程忙于处理我的数据计算而不能刷新UI,故我将规划将数据计算单开一个线程,然后添加subview之类的UI操作转给主线程处理。
我用的多线程框架是ios的NSThread,虽说这个框架可能不如GCD之类的好,但对我已经性能足够,操作简单。
NSThread的简单已不是一般的简单,当然,也有我操作少还没踩到坑的原因,不过上手是很容易的。几乎只比原来加了三四行代码。
添加线程

//targetObject是要执行方法的事例,targetFunc:是那个实例的要执行的方法,ParameterObject是那个方法的参数
NSThread *thread1 = [[NSThread alloc] initWithTarget:targetObject selector:@selector(targetFunc:) object:ParameterObject]; 
//开始线程
[thread1 start];

这样就新建了一个线程,是不是特别容易?
而在别的线程中想要把更新UI的任务传回主线程执行时,只需要

[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值