我正在写一些代码来结束一些CFNetwork东西以在 Objective-C 中进行 DNS 解析。
一切都很好,它正在工作,但我有几个问题:
的异步解析的回调函数原型CFHost正在传递对CFStreamError结构的引用,即使文档说CFStreamError已弃用并且CFReadStreamCopyError应该使用它,这将返回一个CFError结构。
回调函数声明如下:
typedef void (CFHostClientCallBack) (
CFHostRef theHost,
CFHostInfoType typeInfo,
const CFStreamError *error,
void *info);
似乎没有任何替代使用非弃用 API 的回调。
我认为弃用 API 的目的是引入新的 API 来取代旧的 API?如果这是真的,为什么没有使用该CFReadStreamCopyError函数的替代回调呢?
我遇到的主要问题CFStreamErrors真的很不起眼......我能做些什么来把 aCFStreamError变成 aCFError吗?
只是为了澄清几点:
我不相信我误读了关于这一点的文档。CFHosts 异步解析系统中使用的回调方法传入一个CFStreamError. 虽然CFStreamError它本身可能不会被弃用,但返回它们的函数,即CFReadStreamGetError和CFWriteStreamGetError被弃用。文档建议使用CFReadStreamCopyErrorand CFWriteStreamCopyErrorwhich returnCFError而不是CFStreamError.
我将这段代码包装在 Objective-C 中,并且大量使用 Foundation 对象。因此,它对CFError我来说比它有用得多CFStreamError,因为它是免费桥接的,NSError并且CFStreamErrors不包含几乎与 a 一样多的有用信息CFError。此外,我什至没有CFStream直接处理 a ,那么为什么我必须处理它的特定错误结构呢?最后,我想最终NSError在我的包装类中返回一个委托回调。
此外,我知道弃用并不意味着该方法立即消失,但如果某些东西被标记为弃用,那么提供替代方案是有意义的(至少对我而言)。否则,已弃用的方法/函数/类等仍在使用中,并且在某些东西取代它之前没有必要弃用它?