我正在写一些代码来结束一些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
被弃用。文档建议使用CFReadStreamCopyError
and CFWriteStreamCopyError
which returnCFError
而不是CFStreamError
.
我将这段代码包装在 Objective-C 中,并且大量使用 Foundation 对象。因此,它对CFError
我来说比它有用得多CFStreamError
,因为它是免费桥接的,NSError
并且CFStreamErrors
不包含几乎与 a 一样多的有用信息CFError
。此外,我什至没有CFStream
直接处理 a ,那么为什么我必须处理它的特定错误结构呢?最后,我想最终NSError
在我的包装类中返回一个委托回调。
此外,我知道弃用并不意味着该方法立即消失,但如果某些东西被标记为弃用,那么提供替代方案是有意义的(至少对我而言)。否则,已弃用的方法/函数/类等仍在使用中,并且在某些东西取代它之前没有必要弃用它?