Это очень просто, просто используйте справочник по AVFoundation:
Если вы не хотите, чтобы пользователь просматривал вход предварительного просмотра, вы можете просто пропустить часть кода предварительного просмотра.
Изменить: Кому более подробно.
1) Вы настроили конфигурацию захвата с помощью AVFoundation.
2) Вы пропустите часть, на которой установлен уровень предварительного просмотра видео.
3) Вы вызываете метод captureStillImageAsynchronouslyFromConnection: completeHandler: всякий раз, когда вы хотите, чтобы изображение было снято.
Примечание. Если вы хотите, чтобы вспышка не была услышана, и поэтому вы можете нарушать права пользователя в некоторых странах (например, в Японии). Один обходной путь, который я знаю для этого, - это захват кадра видео (не запускает вспышку).
Я просмотрел исходный код инструмента llvm-dis
и нашел нужную мне функцию:
Module *ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext& Context,
std::string *ErrMsg = 0);
из llvm/Bitcode/ReaderWriter.h
.