2012-01-17 1 views
0

- こんにちは。私は、ダウンロードするために使用したいダウンローダクラスを持っています。ブロックを使用して、発信者にダウンロードが完了したことを通知しようとしました。 startWithRequestメソッドは、.net Webサービスを処理するシングルトンクラスから呼び出されます。私はcompletionBlockをインスタンス変数に格納しておき、ダウンロードが完了したらそれを後で呼び出します。それは私にEXC_BAD_ACCESSを与える。私は保持してみたcompletionBlockそれは役に立たなかった。コードは次のとおりです。ブロックを使った私の最初の実験では、私にEXC_BAD_ACCESSが与えられました。理由は分かりません。

​​

助けていただければ幸いです。

+0

あなたが既にリリースした変数をリリースしようとしていると思います。ブレークポイントでプロジェクトを実行し、問題がどの行にあるかを確認してください。 – relower

+0

私はそれが私にエラーを与える場所を知っています(私は場所をマークしたばかりです)が、なぜわかりません。 –

+0

私は正確な問題はわかりません。クラッシュする前に、あなたの接続がデバッグ時にnilでないことを確認してください。 – relower

答えて

4

ブロックをコピーして保持する必要があります。

スタックにインスタンス化されているブロックを保存しないと、保存されたブロックが終了時に定義されるとすぐに消滅します。

-(void) startWithRequest : (NSURLRequest *) request : (void (^)(NSData *data, NSError *error))_completionBlock { 
    completionBlock = [_completionBlock copy]; 

// etc 
+0

はい、問題だった。それは私がまだこれを理解していないすべての読書の後にあるようだ。しかし、少なくともそれは動作します。 –

関連する問題