由于线程问题导致界面卡死

子线程请求数据、主线程刷新UI、这句话,已经说了无数次,然而今天还是在这里掉进了坑,看着日渐稀疏的秀发,还是记录下吧,
首先,如果我的网络请求完成之后直接[self.tableView reloadData],那么界面卡的不要不要的,

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{//子线程中所有数据处理完毕
        id jsondata = [jsonString JSONValue];
        if (jsondata != nil) {
            if (jsondata && [jsondata isKindOfClass:[NSDictionary class]]) {
                self.dataDictionary = (NSDictionary *)jsondata;
                if ([[self.dataDictionary objectForKey:@"flag"] intValue] == 1) {
                    self.dataArray = [self.dataDictionary objectForKey:@"list"];
                    self.maxDropArr = [self.dataDictionary objectForKey:@"maxDrop"];
                }
            }
        }
        dispatch_async(dispatch_get_main_queue(),^{ //重新回到主线程中更新UI
            [self.dataTableView reloadData]; 
        });
    });

这样界面看起来流畅了不少,很好,非常nice,顺带一句,最近在写彩票的走势图,(不得不说使用 - (void)drawRect:(CGRect)rect {}方法对内存和效率方面还是有很多的优势的)回头整理下代码,写个日记记录下期中遇到的坑,先来一张图片占楼,虽然理论来说走势图有问题,然、设计图就是这样的,已经得到PM的确认,并且这么来说,比标准的走势图简单不少,何乐而不为呢,很好,很强大,very good

由于线程问题导致界面卡死_第1张图片
gg、图片不是很清晰,但是能说明问题

你可能感兴趣的:(由于线程问题导致界面卡死)