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

去研究一下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的任务传回主线程执行时,只需要

[self performSelectorOnMainThread:@selector(updateUIFunc) withObject:nil waitUntilDone:NO];

是不是都很方便?

你可能感兴趣的:(objective-c)