多線程之dispatch_queue_t


gcd異步多線程操作使用流程,一般在子線程中處理數據,主線程更新界面

static dispatch_queue_t loadDealersQueue = NULL;
    if (!loadDealersQueue) {
        loadDealersQueue = dispatch_queue_create("com.geelycar.loadactivity.loaddealersqueue", NULL);
    }
    
    dispatch_async(loadDealersQueue, ^{
        @autoreleasepool {
            //Data processing
            dispatch_async(dispatch_get_main_queue(), ^{
            //Update Interface
            });
        }
    
    });

今天又張見識了,看下如下的子線程與主線程的調用

 static dispatch_queue_t searchQueue = NULL;
    if( !searchQueue )
        searchQueue = dispatch_queue_create("com.moneytree.searchqueue", NULL);//調度隊列
    
//異步運行 dispatch_async(searchQueue,
^{ @autoreleasepool {//ARC模式下自動釋放池的寫法
//數據處理放在隊列中 NSArray
*resultData = [[NSArray alloc] initWithArray:[[MTStockManage sharedInstance] stockListMatchingSearchText:searchText fromArray:self.stockList]]; self.stockList = resultData; [self setTableDataSource:nil]; if (resultData.count > SHOW_STOCK_NUMBER) { NSRange range = NSMakeRange(0, SHOW_STOCK_NUMBER); [self setTableDataSource:[resultData subarrayWithRange:range]]; }else { [self setTableDataSource:resultData]; } dispatch_async(dispatch_get_main_queue(), ^{//返回主界面 [self.dataResultTable reloadData]; //主線程中刷新UI }); } });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM