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
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。
関連記事
-  
                              
- 
              iOS6 の Guided Access (Single App Mode) が便利そう昨日のWWDC 2012 キーノートではiOS6の紹介がありいろいろと新機能の説明があったけ 
-  
                              
- 
              おんぷちゃん for iPad 2.0.0リリースあけましておめでとうございます。今年もよろしくお願いします。 2022年8月にはだいたい完成 
-  
                              
- 
              iPhone 5 用のケースと保護シートとジャケットを買ってみた発売日翌日に16GB iPhone 5を入手できたので早速ケースと保護シートとジャケットを買ってみた 
-  
                              
- 
              iPhone/iPad で教育この本は面白そう。今後は教育分野での応用も増えていくだろう。 その時に、iPhone/iPad は教 
-  
                              
- 
              ITMS-90175 Legacy Language Designator自分は自作アプリの非常に古いプロジェクトをいまだにメンテすることがあるので、ITMS-90 
-  
                              
- 
              Apple Special Event 20132013年には下記が発表された。 iPhone 5siPhone 5cついにドコモでも発売 
-  
                              
- 
              Corona SDK本が出るらしい 「Corona SDK」ハンドブック2011値段的に一般人向けではないけれども、Corona SDK 本が出るらしい。 自分がCorona SD 
-  
                              
- 
              iOSの消音問題(iPadの本体横のスイッチの機能が設定で変更可能なためにさらにややこしいことに)おんぷちゃん for iPad から音が出ない、というレポートが定期的に日本からも海外からも来るのだ 
-  
                              
- 
              [iOS] アプリ名にiPadと入れてRejectされた話新作 iPad アプリを App Store に Submit したところ、Reject されたので 
-  
                              
- 
              新作アプリReibunを@marie__100さんに紹介していただきました@marie__100さんに英語学習アプリ Reibunを紹介いただきました。ありがとうございました 

 
         
         
         
        