2012-05-08 8 views
0

SOAP通信を処理するNSURLConnectionDelegateオブジェクトがあります。基本的には、いくつかのプロパティ値を設定してから、XMLリクエストを作成してサーバーに送信するメソッドを呼び出します。オブジェクトはNSXMLParserDelegateであるため、サーバーからのxml応答を解析してデータを適切に処理できます。NSURLConnectionDelegate retainCountが制御外です

オブジェクトを使用するときは、最初にいくつかのプロパティの値を設定します。後の保持カウントはまだ1です。私は最初の方法を呼んでいます。それが楽しみが始まるときです。カスタムメソッドまたはNSURLConnectionDelegateメソッドが呼び出されるたびに、保持カウントが1増加します。NSXMLParserDelegateメソッドが呼び出されると、これは起こりません。すべての通信が終了し、オブジェクトの保持が完了したら43とカウントします。オブジェクトを解放しても保持カウントは減少しないため、解放できないオブジェクトになります。それ以外に、オブジェクトは期待どおりに動作します。

コードがたくさんあり、実際に何も問題がないように見えるので、どのような関連性があるのか​​は分かりません。メソッド内でやっているように、retainCountを増やしています。言及する価値が唯一の他の事は、私は、バックグラウンドスレッドからこれらのメソッドを呼び出すが、メインスレッド上でそれらを実行してるということです:

+0

あなたは 'NSURLConnectionDelegate'' release'をオーバーライドしたことがありますか? 'performSelectorOnMainThread'は、セレクタが終了するまで自動的にオブジェクトと引数の両方を保持する必要がありますが、自動的に解放されるべきです。リリースメソッドが空の場合、保持カウントは増加するだけです。 –

+0

ああ、聖なるくそ私は馬鹿のように感じる。私は私のパラメータの1つ、「リリース」という名前のNSStringを持っていました。私はすべてがうまくいくように変更しました。私はそのような単純なものを見落とすときに房がありがとう、私は嫌い。 – Kris

+0

クール、私はあなたが答えとして投稿し、将来の参照のために受け入れるべきだと思います。 –

答えて

0

は、私が合成されたプロパティ「リリース」という名前と、誤ってオブジェクトのリリースを上書きしていたが判明します方法。おっとっと!

+0

聖なる牛、私はコンパイラがそれについて少なくとも警告しないとは信じられません! –