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開発関連本] iPhoneアプリ成功の法則
和田純平 JYProduct 深津貴之 fladdict @iphone_dev_jp, 海外プレス
-
-
[iPhone開発のネタ帳] loadView, viewDidLoad と viewDidUnload 2011/08/12
拙作のiPadアプリ タッチ!にほんちず や タッチ!ヨーロッパ地図でUIWebViewContro
-
-
コードちゃん 1.2.1 をリリースしました
3年以上アップデートしていなかった、コードちゃん をアップデートしました。 Cmb5
-
-
[iPhone 6 Plus] TUNEWEAR の iPhone 6 Plus 用ケースを買ってみた
iPhone 6 Plus 購入時に、とりあえず購入した Simplism のケースは、すぐ
-
-
Bundle versions string, short と Bundle version の使い分け
Xcode 4 上の、Bundle versions string, short (CFBund
-
-
Kickstarter で iPhone/Android で使える腕時計 Pebble に出資してみた
Kickstarter で28時間で100万ドルを調達したという Pebble E-Pape
-
-
Flurryでアプリ利用状況解析
ブログには書く機会がなかったが、昔からアプリで Flurry をアプリに組み込んで、利用状
-
-
iPad/iPhone 開発本が山のように出るようだ
なんつーかもうすごい状況。もっと出るみたい。 Beginning iP
-
-
EverLearn 1.8.1 を公開しました
EverLearn 1.8.1 を本日公開しました (2016/10/27)単語検索ページで単語をハ
-
-
[iOS9] AVSpeechSynthesizer の再生スピードがおかしい
iPhone 6 Plus を iOS9 にアップデートして自作アプリをXcode7 から転送したと