gpt4 book ai didi

ios - dispatch_async 重新加载 UITableView 不起作用

转载 作者:行者123 更新时间:2023-12-01 16:47:08 25 4
gpt4 key购买 nike

对不起,我是 Cocoa 的菜鸟,因为我是 iOS 移动开发的新手.. 直截了当,我在 Cocoa 上使用 GCD 方法将数据分配给 tableview 但是当我触发 [tableview reloadData]它不工作。这是我的示例代码:

-(void)updateCell{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSIndexPath* indexPath;
// Insert code to be executed on another thread here
if(clean_data){
for (int i=0; i<clean_data.count; i++) {
indexPath= [NSIndexPath indexPathForRow:i inSection:0];
sqCell *cell = (sqCell *)[stockQ cellForRowAtIndexPath:indexPath];
for (int j=0; j<plist.count; j++) {
NSString *a =[[clean_data objectAtIndex:i]objectAtIndex:1];
NSString *b =[[[plist objectAtIndex:j]objectForKey:@"data"]objectAtIndex:0];
if([a isEqualToString:b]){

cell.last.text =[[clean_data objectAtIndex:i]objectAtIndex:1];
cell.change.text = @"1231231312312";

}

}
}
}
dispatch_async(dispatch_get_main_queue(), ^{
// Insert code to be executed on the main thread here
///reload table here
[self reload];

});
});

}

这里方法重新加载数据
   -(void)reload{
NSLog(@"reload");
[stockQ setNeedsLayout];
[stockQ setNeedsDisplay];
[stockQ reloadData];

}

控制台显示 “重新加载”文本,但没有触发 stockQ UITableCiew .. 我的代码发生了什么?

最佳答案

您不会在异步线程中执行 UI 处理代码。修改 UI(如更新 tableView) - 应始终在主线程中完成。尝试从异步任务中提取该代码,看看它是否有效。
另一句话-为什么您需要以任何方式重新加载异步任务中的数据?表格 View 非常轻巧且快速。帖子中的所有代码都应在几毫秒内运行。仅将 dispatch_async 用于长时间运行、耗时的任务!

关于ios - dispatch_async 重新加载 UITableView 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19132013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com