子线程请求数据、主线程刷新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