Objective c CFNetwork即使已弃用,仍会通过CFStreamErrors?
我正在写一些代码,它将一些Objective c CFNetwork即使已弃用,仍会通过CFStreamErrors?,objective-c,error-handling,core-foundation,deprecated,cfnetwork,Objective C,Error Handling,Core Foundation,Deprecated,Cfnetwork,我正在写一些代码,它将一些CFNetwork的东西包装起来,以便在Objective-C中进行DNS解析 一切正常,但我有几个问题: CFStreamError异步解析的回调函数原型正在传递对CFStreamError结构的引用,尽管文档中说CFStreamError已被弃用,应该改用cfreadstreamcopyror,这将返回一个CFError结构 回调函数声明如下: typedef void (CFHostClientCallBack) ( CFHostRef theHost,
CFNetwork
的东西包装起来,以便在Objective-C中进行DNS解析
一切正常,但我有几个问题:
CFStreamError
异步解析的回调函数原型正在传递对CFStreamError
结构的引用,尽管文档中说CFStreamError
已被弃用,应该改用cfreadstreamcopyror
,这将返回一个CFError
结构
回调函数声明如下:
typedef void (CFHostClientCallBack) (
CFHostRef theHost,
CFHostInfoType typeInfo,
const CFStreamError *error,
void *info);
除了使用未弃用的API的回调之外,似乎没有任何替代方法
我认为不推荐API的重点是引入了新的API来取代旧的API?如果这是真的,为什么没有使用CFReadStreamCopyError
函数的替代回调呢
我遇到的主要问题是,cfstreamerror
实在难以描述。。。我能做些什么把CFStreamError
变成CFError
我只想澄清几点: 我不认为我在这一点上误读了文档。CFHosts异步解析系统中使用的回调方法传入一个
CFStreamError
。虽然CFStreamError
本身可能不会被弃用,但返回它们的函数,即CFReadStreamGetError
和CFWriteStreamGetError
会被弃用。文档建议使用cfreadstreamcopyror
和cfwritestreamcopyror
返回CFError
而不是CFStreamError
我在ObjuleC中包装了这个代码,我正在大量使用基础对象。因此,CFError
对我来说比CFStreamError
有用得多,因为它是通过NSError
免费桥接的,CFStreamError
没有CFError
包含的有用信息那么多。此外,我甚至没有直接处理CFStream
,那么为什么我必须处理它的特定错误结构呢?最后,我想在包装器类中的委托回调中最终返回一个NSError
此外,我知道弃用并不意味着该方法立即消失,但如果某些东西被标记为弃用,那么(至少对我来说)提供一个替代方法是有意义的。否则,已弃用的方法/函数/类等仍在使用中,在有什么东西取代它之前,弃用它是没有意义的?弃用意味着它计划要过时。这是为苹果的软件工程师和第三方软件开发人员准备的
此外,您误读了文档。结构由函数返回。文档建议使用新的API函数,而不是使用新的错误结构。实际上并不反对使用
CFStreamError
结构。从文档中可以看出,它将出现在下一个版本中(因为他们不推荐返回它的方法)。不过,现在看来您仍然需要处理结构本身,因为没有进行替换回调
我意识到这不是你想要的答案,但是,
CFStreamError
确实还没有被完全弃用,所以你不会有替代品来替代它的所有用途。我没有误读文档。然而,我问题中的措辞可能不是最好的。当我说应该使用CFReadStreamGetError
而不是CFStreamError
时,我的意思是,一般来说,应该使用CFReadStreamGetError
返回的结构而不是CFStreamError
。但这不是重点。我正在使用的回调显式地传递了一个CFStreamError
,并且没有CFStream
供我使用CFReadStreamGetError
来获取一个未弃用的错误结构。好吧,在这种情况下,我似乎没有什么可以做的。