多線程的使用(1) - performSelectorOnMainThread

在做項目中,要提高效率,就必須使用多線程。
多線程,在網上搜索,有很多方法使用。
今天,接觸到了performSelectorOnMainThread 方法。
  1. NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];  
  2.         [self performSelectorOnMainThread:@selector(RefreshCellForLiveId:)  
  3.                                withObject:userinfo  
  4.                             waitUntilDone:YES];  
  5.         [pool release];  

該方法的作用是在其他線程中,執行主線程制定的方法(代碼塊,一般用於跟新UI)。
參數:
@selector(RefreshCellForLiveId:)就是,要定義我們要執行的方法。
withObject:userinfo
定義了,我們執行RefreshCellForLiveId:方法時,傳入的參數對象。類型是id。(我們可以傳入任何參數)
waitUntilDone:YES];
指定,當前線程是否要被阻塞,直到主線程將我們制定的代碼塊(RefreshCellForLiveId:方法)執行完。


注意:
1.當前線程爲主線程的時候,waitUntilDone:YES參數無效。
2.該方法,沒有返回值
3.該方法主要用來用主線程來修改頁面UI的狀態。

------------------------------------------------------------------------------------------------------------------------------------------------------


iphone開發中,在主線程之外的線程更新主線程所顯示的界面元素,不能直接調用主線程的類的更新界面的方法,否則界面看不到任何結果
.而是需要有個緩衝,叫做
performSelectorOnMainThread
使用方法是,在線程調用到更新界面那個類的時候,在更新界面前,通過如下調用.

  1. [self performSelectorOnMainThread:@selector(updateLabel:) withObject:updateData waitUntilDone:YES];  

比如說你已經定義了一個- (void)updateLabel:(NSString *)txt{}的方法.在此方法中更新界面即可.即時看到結果.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章