gpt4 book ai didi

ios - 回调CFNetwork线程

转载 作者:行者123 更新时间:2023-11-29 03:39:09 25 4
gpt4 key购买 nike

从 CFNetwork 线程中,我想对主队列进行一些处理,并异步获取结果。现在,我将结果分派(dispatch)到使用 dispatch_get_current_queue 获取的队列以获取结果。

dispatch_queue_t baseQueue = dispatch_get_current_queue();
dispatch_async(dispatch_get_main_queue(), ^{
NSString* content = [self processSomething];
dispatch_async(baseQueue, ^{
[self sendResults:result];
});
});

不幸的是,dispatch_get_current_queue 已被弃用。如何在不使用 dispatch_get_current_queue 的情况下实现同样的效果?

最佳答案

CFNetwork 是基于运行循环的。要实现您的要求,您可以使用 CFRunLoop API。像这样:

// ...from some code called by CFNetwork on its run loop
CFRunLoop cfNetworkRunLoop = CFRunLoopGetCurrent();
dispatch_async(dispatch_get_main_queue(), ^{

// On the main thread...
NSString* content = [self processSomething];

CFRunLoopPerformBlock(cfNetworkRunLoop, kCFRunLoopCommonModes, ^{
// Back on CFNetwork's run loop
[self sendResults:result];
});
// Necessary for your block to run right away, otherwise it might
// be delayed (until something else wakes up the run loop.)
CFRunLoopWakeUp(cfNetworkRunLoop);
});

希望对您有所帮助。

关于ios - 回调CFNetwork线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696050/

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