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アプリ おんぷちゃん開発日記 和音表示
自分の娘のために作った五線譜学習アプリ「おんぷちゃん」の開発を細々と続けている。 iPadのグランド
-
iPadアプリ おんぷちゃん が雑誌に紹介されました
いろいろあって、iPhone/iPad アプリのおんぷちゃん がムジカノーヴァ2011年2月号で紹介
-
Build Your Apps for iOS 11 and iPhone X
Build Your Apps for iOS 11 and iPhone X メールが来た。
-
リズムくんがタイ表示に対応しました
長らくお待たせしました。リズム学習アプリ「リズムくん」iPhone版にタイ表示を追加しました。
-
iPhone Dev Center が We’ll be back soon.
iPhone Dev Centerが昨日からずっとメンテナンス中。もうすぐ1日経つと思うけどいつま
-
[iPhone開発のネタ帳] loadView, viewDidLoad と viewDidUnload 2011/08/12
拙作のiPadアプリ タッチ!にほんちず や タッチ!ヨーロッパ地図でUIWebViewContro
-
リズムくん Ver.1.2 アップデート 2012/02/05
iPhone用リズム学習アプリ リズムくん Ver.1.2 アップデートを App Stor
-
iTunes Connect でアプリページを表示できない
いつからかわからないけれども、iTunes Connect で自分のアプリを表示できなくなってしまい
-
そのまま使えるiPhoneゲームプログラム
書店で見かけて立ち読みしてみた。 ゲームで使いそうな小技が紹介されている。ゲーム向けなので、Open
-
[iPhone6 Plus] はじめて保護ガラスを貼ってみた JTT Online Glass Protector
会社の知り合いが色をまちがって購入したということで、iPhone6 Plus 用保護ガラスを