2012年1月27日金曜日

iPad2のカメラ切替時のミス 意図しないタイミングのdealloc

iPad2のカメラを切り替える処理を、sampleを参考に作って動いたー!
ってことで、別処理を作っていたのだけれども、改めて実行すると、動かない、、、。

「動かない」の状況を探っていると、切り替えた直後に、1フレームだけ動作して終わってる、、、。
更に、ログを頼りに追っていったら、キャプチャ処理を管理するオブジェクトが意図しないタイミングでリリースされてる。
 
キャプチャ終了処理 → カメラ切替 → キャプチャ処理開始

動作しなくなるときは、キャプチャ終了処理で、deallocされずに、キャプチャ処理開始の直後にdeallocされてて、一時的にキャプチャ処理を管理するオブジェクトが2つ存在していることが判明。なぜに、そのタイミングでdealloc、、、、。

時間が無いので、暫定対策で、performSelectorでdelayかまして、キャプチャ処理開始処理を実行するようにしたら、無事動作。



2012年1月22日日曜日

AVCaptureSessionで、エラーが出ない場合があるのか、、、。

年末年始から、劇忙。

で、自分にとっては初めての実装を行ったりすると、
今まで動いていた箇所が、突然動かなくなることがあるわけで、、、。
(録画が普通に開始停止できたのが、何かの割り込みで停止になってしまう、、、)

AVCaptureSessionのNotificationでエラーを出そうとしても、nullになってて、原因がわからない、、、。ググッても原因を見つけられず(英語のページばかり)、、。公式サイト検索しても出てこない、、、。
で、これまでの経験からわきでた直感(^_^;)で、ある処理をオフってみたら、、、、

動いた(_ _;)

で、原因は、、、AVPlayerでの音再生?っぽい。録画開始時に音を再生させようとしたんだけども、、、、。録画開始前に再生すれば、いいのかもしれないけども、、、。今回は、時間が無いので、詳細な原因調査は、パスで。