gpt4 book ai didi

objective-c - 在操作目标函数中等待带有 runloop runmode 的异步调用

转载 作者:行者123 更新时间:2023-12-03 17:51:40 24 4
gpt4 key购买 nike

我在 NSOutlineView 的目标操作单击中运行了此代码。目标是在通过 NSOutlineView 上的新点击启动新请求之前完成每个请求(最初是 Web 服务请求)。这可行,但 UI 在第三次单击时变得无响应,直到当前异步调用完成。我缺少什么?

- (void) showMarket:(NSString *)market sender:(id) sender {

do {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} while (loadingMarket);

loadingMarket = true;

NSLog(@"loading market %@", market);
[sender beginProgress:self];


dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"loaded market %@", market);
[sender endProgress:self];
loadingMarket = false;
});




}

最佳答案

从同一个 currentRunLoop 调用 currentRunLoop 完全不是一个好主意。我不认为它是可重入的。使用串行调度队列来执行串行任务。看看the Apple document .

关于objective-c - 在操作目标函数中等待带有 runloop runmode 的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793805/

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