1. 程式人生 > >ios多執行緒初步,主執行緒重新整理UI

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];

是不是都很方便?