gpt4 book ai didi

iphone - iOS应用中的线程问题

转载 作者:行者123 更新时间:2023-12-01 18:23:51 25 4
gpt4 key购买 nike

我对iOS开发有些陌生,并且遇到线程问题。我正在调用一个返回json数据的Web服务,执行此操作的代码按预期工作。对于测试,我希望能够单击一个按钮,检索数据并使用格式化结果填充textview控件。这是我的代码摘自按钮单击事件处理程序:

dispatch_queue_t que = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(que, ^{
thisRiverGauge = [[RiverGauge alloc] initWithStationInfo:gauge forHistoryInHours:5 inThisFormat:@"json"];
[txtResults setText:rval];
});

尝试从线程内更新textview(txtResults)时,出现运行时错误。当我将更新放置到线程外部的textview时,显然不会更新,因为完成线程所需的时间比执行事件处理程序的时间长。有什么解决方案?

谢谢!

最佳答案

您应该在主线程上执行与GUI相关的任务,在要更新textview值的代码周围添加主队列/线程块。

ispatch_queue_t que = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(que, ^{
thisRiverGauge = [[RiverGauge alloc] initWithStationInfo:gauge forHistoryInHours:5 inThisFormat:@"json"];

dispatch_async(dispatch_get_main_queue(), ^{
[txtResults setText:rval];
});
});

关于iphone - iOS应用中的线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414780/

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