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ゲーム開発ワークショップ 翔泳社 PJ Cabrera
以前紹介した、iPhone Games Projects の翻訳本「iPhoneゲーム開発ワークショ
-
-
イタリア語でレビューをいただきました
おんぷちゃん for iPad にイタリア語でレビューをいただきました。 Ottimo! O
-
-
EverLearn 1.7.5 を公開しました
英単語学習アプリ EverLearn 1.7.5 を公開しました。変更点エビングハウスの忘却曲線を参
-
-
iPhone 3G/3GS用ホルダーケース レイアウト RT-P2LC3 カラビナつき
カバンを持っていないときに、iPhoneをジーパンのポケットに入れておくのはちょっと不安。 なの
-
-
[iOS SDK] ObjectAL で EXC_BAD_ACCESS発生
30日から休みだったので、年末は奥さんの実家に帰りつつ、2016年に取り組んでいたアプリの仕上げを行
-
-
[iOS SDK] UIPickerView の文字が表示されない
おんぷちゃん for iPad のiOS7対応をしているときに遭遇した問題。 UIPopove
-
-
LogLocation 1.3.1 で和暦問題に対応しました
4年ぶりに位置情報ログ取りアプリ LogLocations をアップデートしたところ、レビューにて不
-
-
新アプリ「ドラムちゃん」を公開しました
2015年から作りはじめた iPad専用 ドラム譜学習アプリ ドラムちゃん を本日 2017/01/
-
-
LogLocations 1.3.3 Release
恒例の、年末年始時間があるときの LogLocations のアップデート。久し
-
-
Apple iPad まとめ
(2010/01/28 朝5時あたりのapple.comのトップページ) 2010/01/27(水