2012-02-03 18 views
9

私はかなりの問題に遭遇しました。 ASIHTTPRequestはプロダクションビルドでの作業を望んでいないようです。
すべてがデバッグでうまくいきます。しかし、一度生産用にビルドすると、次のコードは実行したくないだけです。ブロックが完了したり失敗したりすることはありません。 デリゲートでセレクタを使用しようとしましたが、どちらも呼び出されません。生産ビルドでASIHTTPRequestが失敗する

__block __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL]; 
[self performSelectorOnMainThread:@selector(startSpinner) withObject:nil waitUntilDone:NO]; 

[request setCompletionBlock:^{ 
    [self performSelectorOnMainThread:@selector(stopSpinner) withObject:nil waitUntilDone:NO]; 
}]; 

[request setFailedBlock:^{ 
    [self performSelectorOnMainThread:@selector(stopSpinner) withObject:nil waitUntilDone:NO]; 
}]; 

[request startAsynchronous]; 

私はそれは私の問題の悪い記述のようなものだ知っているが、誰もが、おそらく、この問題を引き起こす可能性があるものにのようにわずかな手掛かりを持っていますか?

答えて

22

ASIHttpRequestにバグがあり、リリースモードの最適化を実行しているときにこのクラッシュが発生しているようです。以下の2つのファイルの最適化をオフにしている何を私のために働いた

: ASIFormDataRequest.m ASIHTTPRequest.m

ターゲットプロジェクトを選択することにより、これを行う、の「コンパイル ソース」セクションでファイルを選択"ビルド段階"タブ。 -O0(キャピトール0ゼロ)を加える。

あなたはhere

+0

はどうもありがとうございました、それについての詳細を読むことができます。 – endy

+0

本当にありがとう、ありがとう! – cheeesus

+1

複数のフラグを追加するにはどうすればよいですか? ARC で作業できるようにするには、このフラグ-fno-objc-arcを追加する必要があります。リリースモードで作業できるようにするには、このフラグ-O0を追加する必要があります。 – Abo3atef

関連する問題