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
しかし意図せず解放されて問題が起きることはないのかなと思ったりもする。
関連記事
-
-
EverLearn 1.8.0をリリースしました
以前から、iOSから英単語をPebbleに転送できるアプリを作っていましたが、今回はPebbleの画
-
-
TORRAS iPhone 16 Pro Max用ケース
自分はiPhoneはケースを付けない派で、iPhone 12 Pro Max まではケース
-
-
Apple Special Event 2015
https://www.gizmodo.jp/2015/09/applelive_event_ip
-
-
View-Based ApplicationにUINavigationControllerを追加する方法
(いろいろ間違っていたので 2009/05/13 更新) (さらに 2009/08/08 更新) こ
-
-
[iPhone開発本] 基礎から学ぶ iPhoneアプリ開発 林 晃著
基礎から学ぶ iPhoneアプリ開発 という本が2010年7月24日に発売になるらしい。 題名にはま
-
-
[iPhone 開発本] iPhoneのオモチャ箱 でしばらく遊べそう
cocos2d/Box2Dを調べたいと思っていたら丁度発売されたので買ってみた。 実際にcocos2
-
-
Guideline 2.5.10 – Performance – Software Requirements で Reject
2019年3月27日以降、iPhone Xs Maxの画面サイズ6.5インチのスクリーンショットが
-
-
Linking 対応デバイス tomoru
この前 Makuake で出資しそこねた Tomoru が Amazon で ¥ 1,069 + ¥
-
-
Apple Special Event 2017
2017年は仕事で死んでいたので、Special Eventの記事を書けていなかった。記録
-
-
PebbleKit iOS SDK dynamic framework 問題
最近 EverLearn の Pebble アプリがiOSアプリと接続できずエラーが表示されるので、