0

私はCFNetworkObjective-CでDNS解決を行うためにいくつかのものをまとめているいくつかのコードを書いています。

すべてが正常で機能していますが、いくつか質問があります。

の非同期解決のコールバック関数プロトタイプは、ドキュメントに非推奨であり、代わりに使用する必要があると記載されている場合でも、構造体CFHostへの参照を渡します。これにより、構造体が返されます。CFStreamErrorCFStreamErrorCFReadStreamCopyErrorCFError

コールバック関数は次のように宣言されています。

typedef void (CFHostClientCallBack) (
    CFHostRef theHost,
    CFHostInfoType typeInfo,
    const CFStreamError *error,
    void *info);

非推奨ではないAPIを使用するこのコールバックに代わるものはないようです。

APIを廃止するポイントは、古いものに取って代わる新しいものが導入されたということだと思いましたか?これが本当なら、なぜ関数を利用するこれに代わるコールバックがないのCFReadStreamCopyErrorですか?

私が抱えている主な問題は本当にわかりにくいです...aをCFStreamErrorsに変えるために私ができることはありますか?CFStreamErrorCFError


いくつかの点を明確にするために:

この点に関するドキュメントを読み間違えたとは思いません。CFHosts非同期解決システムで使用されるコールバックメソッドは、を渡しますCFStreamError。それCFStreamError自体は非推奨ではないかもしれませんが、それらを返す関数、つまりCFReadStreamGetErrorCFWriteStreamGetErrorは非推奨です。ドキュメントでは、の代わりにCFReadStreamCopyErrorCFWriteStreamCopyErrorを使用することを提案しています。CFErrorCFStreamError

私はこのコードをObjective-Cでラップしており、Foundationオブジェクトを多用しています。そのため、フリーダイヤルでブリッジされており、有用な情報がほとんど含まれていないため、私にとってははるかに便利CFErrorです。さらに、私は直接処理することすらしていませんが、なぜその特定のエラー構造体を処理する必要があるのですか?最後に、最終的にラッパークラスでデリゲートコールバックを返したいと思います。CFStreamErrorNSErrorCFStreamErrorsCFErrorCFStreamNSError

また、非推奨はメソッドがすぐになくなることを意味するわけではありませんが、何かが非推奨としてマークされている場合は、(少なくとも私にとっては)代替手段を提供することは理にかなっています。それ以外の場合、非推奨のメソッド/関数/クラスなどはまだ使用されており、何かがそれに取って代わるまで非推奨にする意味はありませんか?

4

2 に答える 2

0

非推奨とは、廃止される予定であることを意味します。これは、アップルのソフトウェアエンジニアとサードパーティのソフトウェア開発者を対象としています。

また、ドキュメントを読み間違えています。構造体は関数 CFReadStreamGetErrorによって返されます。ドキュメントは、使用する新しいエラー構造体ではなく、使用する新しいAPI関数を提案しています。

于 2010-02-16T16:15:08.107 に答える
0

CFStreamError構造体は実際には非推奨ではありません。ドキュメントから、次のリリースに含まれるようです(それを返すメソッドは非推奨になっているため)。ただし、今のところ、置換コールバックが行われていないため、構造体自体を処理する必要があるようです。

これはあなたが探していたタイプの答えではないことを私は理解していますが、CFStreamError実際にはまだ完全に非推奨になっていないので、すべての用途に代わるものはありません。

于 2010-02-18T19:23:05.510 に答える