このメソッドの戻り値に関するアップルのドキュメントには、次のように書かれています。
戻り値
URLリクエストのURL接続。接続を初期化できない場合はnilを返します。
これは、Cocoa(およびObjective-C)のベストプラクティスに精通していない人にとっては誤解を招く可能性があります。
通常、init
メソッドはオブジェクトを返す必要があります。オブジェクトを返すという根本的な理由がない限り、危険です。他のほとんどの言語は、例外をスローすることでこのようなケースを処理し、無数のtry/catchブラケットを追加する必要があります。
たとえば、リクエストパラメータとしてaを渡すと、メソッドinitWithRequest:delegate:
が返されます。そして正当な理由で。有用な目的を持たない接続オブジェクトを作成するのはなぜですか?nil
nil
ただし、飛行機モードや無効なURLなどの状況を考えてみましょう。initWithRequest:delegate:
戻ったばかりの場合nil
、何が悪かったのかをどうやって知ることができますか?接続の呼び出しを許可するとconnection:didFailWithError:
、エラーパラメータを通じて、特定の失敗についての洞察を得る機会が得られます。
接続のイベントを処理するnil
必要があるかどうかについての質問に対処するには、次のようにします。接続の初期化に失敗した場合、接続デリゲートメソッドが呼び出されることはありません。したがって、コードがこれらのコールバックに依存して後続のリクエストを発行する場合は、そうする必要があります。
補足:NSMutableData
有効な接続があることをまだ知らないため、ここでの作成は少し時期尚早です。私がここで与えた答えは、これを行う場所に関するいくつかの非常に基本的なサンプルコードを与えました。