まだAppleのサンプルプログラム「AVCam」を見ています。

エラー回避のための安全策が大半を占めますが、

その次くらいに多いのがLivePhotoというキーワードです。

 

私の実機はiPhone6なので、LivePhotoが何なのかしばらくわかりませんでした。

6s以降の静止画撮影はLivePhotoモードがデフォルト設定なんですねびっくり

 

どちみち、うちには動作環境がなく、確認のしようもないので、

LivePhoto関連は削ってみようと思います。

そうすると静止画撮影に関しては、

AVCapturePhotoCaptureDelegateの実装ということになり、

書籍のサンプルプログラムと大差ない規模に近づきます。

 

残りは動画モードで、これがちょっと難解です汗

マルチスレッドを使っているのは、ユーザーの操作感の向上のためで、

状態の取得や設定の変更が完了するまでの間、

画面が止まったり真っ暗になったりしないようにする、

「待たされている」という印象をユーザーに与えないようにする、

という工夫だと思われます。

 

なのでこのテクニックも、無くてはならないわけではないようです。

(実際、プロセッサが非力なデジタルカメラでは結構モタつきますしねカメラ

ただ、コードを眺めているとパターンが何となく見えてきます。

ビューやコントロール部品はメインスレッドからアクセスして、

入力にしろ出力にしろ、何かしらのデバイスを相手にする時は

別スレッドのシリアルキューに投げ込まれています。

 

カメラアプリは、カメラユニットから入力して、ストレージに出力しますから、

ほぼすべての処理が別スレッドになっています。

それでコードが複雑に見えるのでしょうショボーン