Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CFNetwork即使已弃用,仍会通过CFStreamErrors?_Objective C_Error Handling_Core Foundation_Deprecated_Cfnetwork - Fatal编程技术网

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
来获取一个未弃用的错误结构。好吧,在这种情况下,我似乎没有什么可以做的。