1

私はこれに似た状況を持っています: Objective-C: 非同期メソッドに適切にメモリ管理を使用する方法

xml ドキュメントを非同期的にダウンロードして解析するオブジェクトがあります。次に、取得したデータを呼び出し元に転送するデリゲート メソッドがあります。

私の2つの質問は次のとおりです。

データ取得オブジェクトはいつ解放しますか? 上に投稿したリンクには 2 つの回答があり、1 つはデリゲートでのリリースと言い、もう 1 つはすぐにリリースと言い、どちらが正しいか (または両方の答えが正しい場合はどちらが良いか) を示します。

2 番目の質問は、取得したデータを発信者に転送する最善の方法は何ですか? 現時点で私が持っている

self.imagesDataSource = [articleImagesParserObject.returnedArray copy];

私が理解している限り、それによって可変配列が不変になるため、コピーを使用しました。あれは正しいですか?

4

1 に答える 1

0

私はいくつかのことについてあなたを迎えに行くつもりです..それはボールが転がり始めるかもしれません:)

あなたは言う

次に、取得したデータを呼び出し元に転送するデリゲート メソッドがあります。

-- 編集 --
NSURLConnection のデリゲートにメッセージを送信するということです。はい、それは単なるセマンティクスですが、より明確です。

あなたは言う

上に投稿したリンクには2つの答えがあり、1つはデリゲートでリリースし、もう1つはすぐにリリースすると言います

リンク先の投稿には、スレッドを使用してセカンダリ スレッドを起動するとNSThread +detachNewThreadSelector:toTarget:withObject:オブジェクトが保持されるため、終了したら、通常どおりに解放できると書かれています。あなたはこれをしていません。

2 番目に推奨される方法は、バックグラウンド操作が完了したときにコールバックするメソッドを提供することです。NSURLConnection を使用していて、すでにコールバック フックが提供されており、実際にダウンロードしたデータを返すためにそれらを使用しているため、これが進むべき道のようです。

可変配列をコピーすると、自分が所有する不変のコピーが得られます。したがって、self.imagesDataSource = [[articleImagesParserObject.returnedArray copy] autorelease]imagesDataSource が保持されない限り、そうなるはずです。これは不規則です。

于 2010-07-08T23:47:48.780 に答える