我正在编写一些代码,其中包含一些CFNetwork
内容,以便在Objective-C中进行DNS解析。
一切都很好而且有效,但我有几个问题:
CFHost
的异步解析的回调函数原型正在传递对CFStreamError
结构的引用,即使文档中说CFStreamError
已弃用且应使用CFReadStreamCopyError
,这将返回CFError
结构。
回调函数声明如下:
typedef void (CFHostClientCallBack) (
CFHostRef theHost,
CFHostInfoType typeInfo,
const CFStreamError *error,
void *info);
似乎没有任何替代此回调使用非弃用API。
我认为贬低API的重点是引入了新的替代旧版本的API?如果这是真的,那么为什么没有使用CFReadStreamCopyError
函数的替代回调呢?
我遇到CFStreamErrors
的主要问题实际上是不明白的...我有什么办法可以将CFStreamError
变成CFError
吗?
只是澄清几点:
我不相信我在这一点上误读了文档。 CFHosts异步解析系统中使用的回调方法传递CFStreamError
。虽然CFStreamError
本身可能不被弃用,但不推荐使用返回它们的函数,即CFReadStreamGetError
和CFWriteStreamGetError
。文档建议使用CFReadStreamCopyError
和CFWriteStreamCopyError
返回CFError
而不是CFStreamError
。
我在Objective-C中包装此代码,并且我正在大量使用Foundation对象。因此,CFError
对我来说比CFStreamError
更有用,因为它与NSError
和CFStreamErrors
的免费桥接不包含与... CFError
几乎一样多的有用信息。一个CFStream
。此外,我甚至没有直接处理NSError
,为什么我必须处理它的特定错误结构?最后,我想最终在我的包装器类中的委托调用中返回{{1}}。
此外,我知道弃用并不意味着该方法已经消失,但如果某些内容被标记为已弃用,那么(至少对我而言)提供替代方案是有意义的。否则,不推荐使用已弃用的方法/函数/类等,并且在取代它之前弃用它是没有意义的吗?
答案 0 :(得分:0)
弃用意味着计划过时。这适用于Apple的软件工程师以及第三方软件开发人员。
另外,您误读了文档。该结构由函数 CFReadStreamGetError返回。该文档建议使用新的API函数,而不是使用新的错误结构。
答案 1 :(得分:0)
CFStreamError
结构实际上并未弃用。从文档中看,它似乎将在下一个版本中(因为它们不推荐使用返回它的方法)。但是现在,看起来您仍然需要处理结构本身,因为没有替换回调。
我意识到这不是您正在寻找的答案类型,但CFStreamError
实际上尚未完全弃用,因此您不会替换它的所有用途。