EXC_BAD_ACCESS発生中
全く同じ処理を、同期処理で実行した場合は大丈夫なのだが、以前にも書いたようなGCDを通した非同期処理で通した場合に同エラーが発生しており、中々原因が判明せず難儀している。
正常に動くケース
ボタンタップ (UIThread) --> IBAction --> HogeAction --> HogeTask.preExecute --> HogeTask.execute --> HogeTask.postExecute --> 戻り値使用
異常終了するケース
ボタンタップ (UIThread) --> IBAction --> HogeAction --> HogeTask.preExecute --> HogeTask.executeInBackground (Thread-2) executeInBackground 待ち合わせ --> HogeTask.postExecute --> 戻り値使用 --> EXC_BAD_ACCESS !!
InstrumentsでProfilingした結果ではZombieはexecuteInBackgroundの戻り値であることが判っているので、同期処理と非同期処理で戻り値としているローカル変数の参照カウントを減じている部分の差だろうと思うのだが....。
ARCはコードもすっきりするし非常に便利なのだが、明示的では無い分トラブルが発生した時にはARCが無かった場合を想像しなければならないんだな。