「will connect」と呼ばれるコールバックは、CFStream がまだ設定可能であることの証明にはなりません。Apple の CFReadStreamSetProperty の契約は、独自のドキュメントが別段の定めをしていない限り、プロパティは開く前に設定するものと想定すべきだと述べています。

既存のストリーム統合では、手順をまとめて保ってください。ストリーム/ペアを作成し、正しく型付けされた SOCKS 辞書を構築し、適切なプロパティを設定してその Boolean 結果を確認し、その後イベントを登録して開く処理を開始します。

false の結果は設定の失敗であり、導入済みの経路ではありません。続行する前にストリームの種類、プロパティキー、辞書の値の型、ライフサイクルを確認してください。

イベント駆動の構成では、折衝が完了していなくても開く処理が始まることがあります。接続を使用可能とみなす前に、ステータスイベントとエラーイベントを観察してください。

別のライブラリがストリームを所有している場合は、そのドキュメント化されたオープン前フックを使用してください。後になってからしか届かないコールバックは、誤った統合ポイントである可能性があります。すでに開いたストリームのプロパティを変更しても、その既存の接続を SOCKS に移すことはできません。

関連記事