2011-01-28 8 views
0

のASIHTTPRequestを使用すると、これは別の初心者の質問です。外部クラス

私は外部のクラスからASIHTTPRequestを呼び出したい(私はすでに私のメインクラスでそれを使用するため)、私はこのような何かを:saveComment方法はASIHTTPRequestタスクを実行

ASIHTTPNSFabExt *nRequest = [[ASIHTTPNSFabExt alloc]init]; 

nRequest.URL = @"http://something"; 
nRequest.var1 = [dictionaryRecord objectForKey:@"something"]; 
nRequest.var2 = [dictionaryRecord objectForKey:@"something"]; 
[nRequest saveComment]; 

ASIHTTPRequestメソッド内でエラーが発生するメインクラス内で[nRequest release]を実行しようとする場合を除いて、すべて動作しています。

私のリリース前の数を保持し、自動解放も機能しません:私はいくつかのメモリ管理の基本が欠けていると確信していますが、それを操作する正しい方法を検索する手助けはできますか?

ありがとう事前に

ファブリツィオ

答えて

0

あなたがこれまでに投稿したコードと、明らかに間違っては何もありません。この問題は、ASIHTTPNSFabExtのinit/deallocメソッド内のASIHTTPRequestオブジェクトへの参照を処理している可能性があります。

ASIHTTPRequestを別のObjective-Cクラスにラップするのに特別なことは何もありません。標準では、正しいポイントでオブジェクトを保持/解放していることを確認し、リリース後には使用しません。

あなたは巧みな人だと思うので、iOSのメモリ問題をデバッグするための標準的なテクニックを使用して、このことをほぼ確実に理解することができます。

まず、NSZombiesを有効にして実行します。アプリケーションがどこで停止するのかをコンソールで確認すると、「メッセージが割り当て解除されたオブジェクトに送信されました」というエラーと、そのメッセージを送信しようとしたコードの行を正確に示すバックトレースが表示されます。

次に、そのコード行が割り当て解除されたオブジェクトに送信されている理由を把握する必要があります。おそらく、オブジェクトが保持されていたインスタンス変数にnilを割り当てることによって、あまりにも早すぎるか、またはそれに続いていない欠落した「保持」または「解放」になります。

- 編集 - 言及する価値も

は、それ以外の場合は、それが割り当て解除された後、あなたのクラスを呼び出すしようとする可能性があり、あなたがあなたのdeallocメソッドでASIHTTPRequestからデリゲートを削除することを確認しなければならないことである - request.delegate = nil;または[request clearDelegatesAndCancel];

+0

私はあなたの返事を完全に理解しているかどうかはわかりませんが、ASIHTTPRequestデリゲートを削除しないので、最後の部分が問題だと思います。コードのどの部分が「割り当て解除されたオブジェクト」を生成するのかわかりませんが、それはASIHTTPRequest内のメソッドですが、わかりません。とにかくTHANX – Fabrizio

+0

このトピックを閉じると、[nRequest retain]と[nRequest release]を使って修正したと思います。それは働いているようだ。 Thanx – Fabrizio

関連する問題