質問: Xcode8.1、対象は、iOS10です。 Objective-C 環境で AVFoundation の AVCaptureVideoDataOutput を使ってアプリを作成しようと思い、下記のサイトを参考にプロジェクトを作成したものの、ビルドはできるのですが [session startRunning] のタイミングでどうしてもエラーが発生します。 カメラに映った被写体を加工することを目標としていたため、サイトのプログラムからキャプチャ部分を外して動作確認をしています。 エラーが報告されるのは Thread3〜10 の 0x18cbfcd74<+8>:b.lo 0x18cbfcd8c ;<+32> という場所(?)で、内容は signal SIGABRT です。この内容がリンクミスなどのちょっとした、しかしプログラム自体を精査しなければ分からない問題であることは承知していますが、お気付きの点がございましたらご教授願います。 参考したサイト
回答: リンク先のサンプルプログラムは、Xcode 8.1のプロジェクトに、コピー&ペーストしただけで、2箇所の警告が出るものの、そのまま実機テストで動作します。 推測しますと、iOS10から強化されたプライバシー保護が原因ではないかと思われます。カメラデバイスと、フォトライブラリへアクセスしようとすると、「アクセスを許可しますか?」というアラートが表示され、ユーザが許可ボタンを押さないと、これらへのアクセスが拒否されます。 プロジェクトでは、Info.plistを編集して、これらのアラートを出す初期設定にしないと、アプリがクラッシュしてしまいます。質問者さんが、この編集をしていなければ、クラッシュの原因は、おそらくここにあります。 !画像の説明をここに入力 1. Info.plistを開きます。 2. 赤矢印のプラスボタンを押して、新規項目を作成します。 3. 「Privacy - Camera Usage Description」と「Privacy - Photo Library Usage Description」2つを追加します。