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
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。
関連記事
-
-
Pro iPhone Game Development は発売延期らしい
面白そうだったので結構前にAmazonで注文したのだが、ずっと発売されず、おかしいとおもって発売元の
-
-
MacFan 2019年11月号購入
毎年この時期は必ず Mac雑誌を買っている。発売されたばかりのiPhone情報が特集されるためだ。
-
-
LogLocations 1.4.0 写真表示対応
行動ログは取りたいが、何も操作したくない。という自分のようなずぼらなログ好きユーザ向けのアプリ、L
-
-
「iPhoneの動作が遅くなる場合があります」に対応する
年末年始は休みがあるのでブログ更新頻度が高い。以前から気になっていた、LogLocationsを起動
-
-
Olympus Camera Kit (SDK)を製品版に移行
発売が延期されていた OLYMPUS AIR A01も2015/3/25(水)についに発売された。
-
-
[iOS8] BlocksKit で不具合発生
iOS8 にアップデートしたところ、BlocksKit の UIAlertView と UI
-
-
[iPhone SDK] 自作iPhone アプリのアイコンをつや消しにする
iPhone のホーム画面に表示されるアプリアイコンは自動的に てかてか つやつや 効果を付与されて
-
-
iOS6 の Guided Access (Single App Mode) が便利そう
昨日のWWDC 2012 キーノートではiOS6の紹介がありいろいろと新機能の説明があったけ
-
-
はじめてのiPhoneプログラミング 正誤表
発売されてからすぐ はじめてのiPhoneプログラミング を購入し、必要に応じて少しずつ読み進めてい
-
-
[iPhone SDK] View Based Application で NIB(XIB)ファイルを削除してみる
iPhoneアプリ開発に慣れてくると、段々Interface Builderを使わなくなってくる。