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
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。

関連記事

Wi-Fi体重計Withings WS-50 を買ったのでSDKを試してみる

奥さんからの要望でスマホと連携する体重計を検討していたが、いつの間にかWithingsのWS-50が

記事を読む

no image

[iOS SDK] QuickDialog を使ってみた

iOS オープンソースライブラリ徹底活用 菊田剛著 秀和システム | DevCafeJp で紹介さ

記事を読む

no image

Apple、iPhoneアプリは今後3.0互換でなければ受付けないと通告

Apple、iPhoneアプリは今後3.0互換でなければ受付けないと通告 うちにはこのメールは届いて

記事を読む

MacOS版1Password を3.8.22から 5.4.1にアップグレード

3.xからの1Password ユーザで、MacOS版もiOS版も有料版を3.xの頃に購入して、

記事を読む

no image

[iPhone SDK] sqlite 学習中。FMDB を知る。

SQLite入門 第2版西沢 直木 翔泳社 2009-05-19売り上げランキング : 17582

記事を読む

no image

iPhoneアプリ おんぷちゃん開発日記 音楽理論学習本 Practical Theory Complete

おんぷちゃん開発のために多少の音楽理論が必要となり、良い本を探していたところ下記の本を発見しました。

記事を読む

EverLearn 1.7.2 を公開しました

英単語学習用アプリ EverLearn 1.7.2 を公開しました (2015/10/22)TOEF

記事を読む

Xcode6 Localization

久しぶりに新アプリを作っていて、完成が近づいてきたので最後にLocalizeを行っている。 た

記事を読む

Appleシリコン搭載Mac発表?

いつからか、下記の文言が App Store Connect で表示されるようになった。

記事を読む

no image

Beginning iPhone 3 Developmentの続編が出るらしい

iPhone開発の入門書としていま一番良いと個人的に思っている、Apressの Beginning

記事を読む

Message

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Ember Mug 2のACアダプタをUSB Type-Cに変えてみた

冬になると活躍する Ember Mug 2 の充電器は付属のACアダ

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

→もっと見る

  • 2011年8月
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
PAGE TOP ↑