NSURLConnnection オブジェクトをいつ解放するか 2011/08/06

公開日: : iPad, iPhone ,

NSURLConnection の

-[NSURLConnection initWithRequest:delegate:]

で生成した NSURLConnection オブジェクトは下記のどれで処理をすればよいのかを知りたくなった。

  1. プロパティに保持しておいて後でreleaseする
  2. autoreleaseにする
  3. 保持せず、後から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
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。

関連記事

no image

iPhone SDK開発のネタ帳 Observerパターン

Head First デザインパターンでも2番目に紹介されているObserverパターン。使用頻度も

記事を読む

EverLearn 1.8.1 を公開しました

EverLearn 1.8.1 を本日公開しました (2016/10/27)単語検索ページで単語をハ

記事を読む

no image

iPhone 3G 購入

ついにiPhone 3G 購入。とは言っても自分ではなく奥さん用。 そのうちiPhone 3G 初代

記事を読む

no image

省メモリプログラミング

昔買った「省メモリプログラミング」を読み返してみたら、Objective-Cで採用している参照カウン

記事を読む

no image

見たかった映画「ソーシャル・ネットワーク」を見る複数の方法

かなり見たかったけれどもふたごが小さくてとても見に行けなかった映画、「ソーシャル・ネットワーク」がも

記事を読む

EverLearn-Pebble

EverLearn 1.8.0をリリースしました

以前から、iOSから英単語をPebbleに転送できるアプリを作っていましたが、今回はPebbleの画

記事を読む

no image

Amazon Book Marker 取り下げ

昨日2010/01/16(土)の朝に米Amazonより、ライセンス規約に違反していると警告がきたため

記事を読む

no image

EverLearn 1.3.0 をリリースしました

EverLearn 1.3.0 をリリースしました。(2013/10/25 公開) これまでの成績

記事を読む

no image

iTunes Connect の支払先をCitibankに変更

iTunes Connectからの送金を三井住友銀行の口座で受け取っていたが、毎月4000円の手数料

記事を読む

no image

確かにきれいに貼れる パワーサポート アンチグレアフィルムセット for iPhone 4 PHK-02

会社の知り合いがiPhone 3GSに貼っていた保護シートがえらくきれいに貼れているのでメーカーを確

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

窪田テニス教室でスピンサーブ

15年以上テニススクールに通っているが、スクールにシングルス

LogLocations 1.4.0 写真表示対応

行動ログは取りたいが、何も操作したくない。という自分のようなずぼらな

Apple Watch用バッテリーロガーを公開しました

1年前に開発し、App StoreにSubmitしたものの Reje

Guideline 2.5.10 – Performance – Software Requirements で Reject

2019年3月27日以降、iPhone Xs Maxの画面サイズ6.

XcodeにiPhoneとwatchが表示されない

2019年はGWに10連休があるということで、今日は3日目。毎日少し

→もっと見る

  • 2011年8月
    « 7月   9月 »
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
PAGE TOP ↑