最近開發項目時發現聯網獲取到數據後,使用通知方式讓列表刷新會存在死機的問題。編程
通過上網查找不少文章,都建議使用異步更新的方式,但是依然崩潰。多線程
最後嘗試使用performSelectorOnMainThread方法能夠成功更新tableView。異步
下面就學習一下這個函數吧!函數
NSObject類的performSelectorOnMainThread和performSelectorInBackground能夠實現簡單的多線程編程技術學習
一、- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg線程
建立一個線程在子線程執行,aSelector表明了新建立的線程,arg是傳入的參數orm
二、- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;對象
該方法的做用是在主線程中,執行制定的方法(代碼塊)。開發
參數:it
@selector就是,要定義咱們要執行的方法。
withObject:arg定義了,咱們執行方法時,傳入的參數對象。類型是id。(咱們能夠傳入任何參數)
waitUntilDone:YES指定,當前線程是否要被阻塞,直到主線程將咱們制定的代碼塊執行完。
注意:
1.當前線程爲主線程的時候,waitUntilDone:YES參數無效。
2.該方法,沒有返回值
3.該方法主要用來用主線程來修改頁面UI的狀態。