iOS5 で NSURLConnection メソッドが Deprecated になってる

iOSアプリで非同期にファイルをダウンロードする場合、NSURLConnection のメソッドを使うのがお約束

  • connection:didReceiveResponse:
  • connection:didReceiveData:
  • connectionDidFinishLoading:
  • connection:didFailWithError:
  • connection:didReceiveAuthenticationChallenge:


、、、だったんだけど、iOS5 から Deprecated になってた。じゃーどすれば良いのかって話も書いてくれてないし (T^T)


どーなってんだと思ってたら、stack overflow にネタ見っけた :-)

Fishing around the header files tells me that the methods were moved from an informal protocol (which is a deprecated Obj-C pattern) into a formal delegate protocol called NSURLConnectionDataDelegate that's in NSURLConnection.h, but doesn't have a public documentation.

iOS5 NSURLConnection methods deprecated


どうやら iOS5 からは NSURLConnectionDataDelegate が追加されて、そこにメソッドが移されたみたい。たしかに URLConnection の delegate を指定するときに xxxDelegate とか明示的に宣言しないまま self とか指定して???とは思ってたけど。まぁ、キレイに整理しました、、、って感じなんだろね。

ただ、Public Document に載ってないのに って指定して良いのかな? iOS4のプラットフォームにインストールしてちゃんと動くんかな? これが理由で Apple の公開審査NG ってオチになったら笑えないなぁ ^^;)

おまけ

API を見たところ、iOS5 以降だとファイルダウンロードや認証にはこちらを使うのが正解なのかな?

おまけ2

NSURLConnectionDownloadDelegate の使い方サンプルで良い感じのがあったのでメモっとこ :-)

おまけ3 - 2011/11/28

上で書いた話の裏取り。iOS 4.3 to iOS 5.0 API Differences を見たら、確かに NSURLConnection.h で duplicated (Removed) になったメソッドが NSURLConnectionDataDelegate 以下に移動 (Added)されたってなってる。でも Public API にリンクされてない。なんでだろ?ホントにこの API 使うで大丈夫なんかな? ^^;) 

NSURLConnectionDataDelegate that's in NSURLConnection.h, but doesn't have a public documentation.