NSURLConnnection オブジェクトをいつ解放するか 2011/08/06
NSURLConnection の
-[NSURLConnection initWithRequest:delegate:]
で生成した NSURLConnection オブジェクトは下記のどれで処理をすればよいのかを知りたくなった。
- プロパティに保持しておいて後でreleaseする
- autoreleaseにする
- 保持せず、後からconnectionDidFinishLoadingなどのdelegateメソッドでreleaseする
しかし今日2011/08/06 の時点で自分が NSURLConneciton でGoogle検索すると、
Geekなぺーじ : NSURLConnection (非同期) [1]
とか中途半端なページばかりが見つかり、これらを参考にするとメモリリークが発生しそうなのでメモを残してみる。
今回の場合 Mac OS X Developer Library の URL Loading System Programming Guide: Using NSURLConnection が一番参考になりそう。
これによると、
3. 保持せず、後からdelegateメソッドでreleaseする
が正しいようだ。
ただ、下記のように書くと Xcode の Analyze で Potential leak of an object allocated on line xxx and stored into ‘conn’ といわれてしまう。後で release しているので問題ないのだが、AnalyzeはそこまでAnalyzeできないようだ。
// Returns an initialized URL connection and begins to load the data for the URL request. NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if(conn) { receivedData = [[NSMutableData alloc]init]; }
自分の以前のコードは 2. autorelease にする で書かれていて、これはこれで普通に動いているけれども場合によっては問題が起きることもありそうだ。
iphone – NSURLConnection leak? – Stack Overflow
に書かれている。
NSURLConnection には、-[NSURLConnection initWithRequest:delegate:] 以外に +[NSURLConnection connectionWithRequest:delegate:] もあり、こちらを使えば release を心配する必要はない。
iphone – Memory management for NSURLConnection – Stack Overflow
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。
関連記事
-
「サンプルプログラムでマスターする iPhone SDK」 の感想
2009年9月に発売された本。 iPhone SDK 3.0 リリース後に書かれた本なので、3.
-
iPhoneゲーム開発ワークショップ 翔泳社 PJ Cabrera
以前紹介した、iPhone Games Projects の翻訳本「iPhoneゲーム開発ワークショ
-
詳解 Objective-C 2.0 改訂版 2010年12月17日発売
まだ書店で遭遇できてないけれども荻原さんの詳解 Objective-C 2.0の改訂版が発売されてい
-
[iOS SDK] ObjectAL で EXC_BAD_ACCESS発生
30日から休みだったので、年末は奥さんの実家に帰りつつ、2016年に取り組んでいたアプリの仕上げを行
-
2015年に買ったりもらったりリリースしたりしたもの振り返り
年末なので2015年を振り返ってみよう企画。前半は仕事で死んでいたが、思ったよりもいろいろ活動してい
-
自作アプリ おんぷちゃん にランキングモードを追加
かなり前からほそぼそと準備を続けていた、五線譜学習アプリ おんぷちゃんへのランキング挑戦モード追加
-
おんぷちゃん for iPad 大譜表モード+MIDI対応を追加しました
おんぷちゃん for iPad: ぽこ・あ・ぽこ の方がおんぷちゃん for iPad を紹介してく
-
MacOS Yosemite に Pebble SDK 3.0 をインストールする
Pebble Timeが届いたので、早速 Pebble SDK 3.0 をMacBook P
-
Apple Event 2021.04
今回はちょっと驚いた。最近リークが少なくて良き。もしくは自分がSNSから離れているのもある
-
Objective-C 2.0のプロパティで再びはまる
Objective-C 2.0のプロパティに関してはまったことがあり、これはちょっと詳しく知っておく