有一段代码使用 CFHostStartInfoResolution() 进行 DNS 查找。然而,这是同步的,因此在它返回之前会阻止任何东西 - 这很糟糕,我还认为它会在连接弱时由于超时而导致崩溃(当它不好时,它会直接安全地失败)
所以我想异步执行此操作,因为它应该在文档https://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFHostRef/Reference/reference.html 新文档 URL 20190227:https:// /developer.apple.com/documentation/cfnetwork/cfhostref
具体来说,它说:
如果要异步解析主机。调用 CFHostSetClient 将您的客户端上下文和用户定义的回调函数与主机相关联。然后调用 CFHostScheduleWithRunLoop 在运行循环中调度主机。
然而,这让我很反感,因为我已经很久没有编写 C 代码了,也无法正确获得回调和 runloops/threading。
我应该如何调用 CFHostSetClient、CFHostScheduleWithRunLoop,以及如何实现这些回调?我需要开始一个新线程吗?