gpt4 book ai didi

ios - 在 B 线程上解析但将值传递给主线程?

转载 作者:行者123 更新时间:2023-11-29 04:38:33 25 4
gpt4 key购买 nike

我对线程非常陌生。这是我的问题。我有一个自定义 Parser 类,它使用 NSXMLParser 并执行其他一些小操作。它解析来自网络的 XML 并创建值字典。我还有一个 DataProcesor 辅助类,它处理从 Parser 传递给它的数据 (NSDictionary),并在托管上下文中从中创建真正的 CoreData 对象。

现在我想将我的解析器移动到后台线程。我该怎么做呢? (NSthread、NSOperation、GCD...)?解析器应该如何将这些 NSDictionaries 返回到主线程上的数据处理器?

Parser 对象符合 NSXMLParserDelegate 协议(protocol),即。它处理来自解析器拥有的 NSXMLParser 的回调。

最佳答案

使用 GCD 在后台线程上启动 XML 解析器

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
//call your xml parser
//pass yourself in as it's delegate
});

当您在回调中收到 NSDictionary 时,在更新任何 UI 元素之前跳回主队列

-(void)myCallBack:(NSDictionary*)newData {
dispatch_async(dispatch_get_main_queue(), ^{
//execute on main queue
ProcessDictionaryData(newData);
});
}

关于ios - 在 B 线程上解析但将值传递给主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724869/

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