2012-02-09 6 views

答えて

1

パーサーデリゲートが時期尚早にリリースされていないことを確認してください。パーサーはデリゲートへの弱い参照しか保持せず、パーサーが完了する前にデリゲートがdeallocされていると、パーサーがそのデリゲートメソッドを呼び出そうとしたときに不正なアクセスを取得します。

+0

私は[パーサーのリリース]をブロックに入れて、すべて正常です。 – Voloda2

0

実際、[parser parse]の前に[parser release]が行われたのはその理由です。ブロックをキューにディスパッチした後(ブロックが実行を待つ)、[パーサの解放]が直ちに呼び出されます。 dispatch_asyncを使用する場合、ブロックの実行遅延があることに注意してください。

これは、[parser release]をブロックに入れてすべてが正常になる理由についても説明します。