У меня есть ряд связанных вопросов, связанных с использованием AVExportSession. Я прекрасно понимаю, что я мог бы попытаться сделать это неправильно, но попробовал пару решений безрезультатно.AVExportSession изменение вида по завершении
Я экспортирую композицию с использованием AVExportSession, а затем используя обработчик завершения для запуска другого кода после его завершения (должно быть в течение 3 секунд обычно). Проблема возникает, когда я хочу изменить представление при завершении. Например, у меня есть кнопка в модальном представлении, которая запускает экспорт аудио, но я бы хотел, чтобы он впоследствии закрыл представление при завершении. Сообщение об ошибке, которое я получаю, совершенно очевидно - «Это может быть результатом вызова в UIKit из вторичного потока».
NSURL *exportURL = [NSURL fileURLWithPath:saveSong];
exportSession.outputURL = exportURL;
exportSession.outputFileType = @"com.apple.m4a-audio";
[exportSession exportAsynchronouslyWithCompletionHandler:^{
if (AVAssetExportSessionStatusCompleted == exportSession.status) {
NSLog(@"AVAssetExportSessionStatusCompleted");
[[NSNotificationCenter defaultCenter]
postNotificationName:@"end"
object:self];
} else if (AVAssetExportSessionStatusFailed == exportSession.status) {
// a failure may happen because of an event out of your control
// for example, an interruption like a phone call comming in
// make sure and handle this case appropriately
NSLog(@"AVAssetExportSessionStatusFailed");
} else {
NSLog(@"Export Session Status: %d", exportSession.status);
}
}];
Моя текущая попытка предполагает отправку NSNotification, чтобы закрыть окно в попытке прыгнуть на основной поток.
Очень жаль, если это кажется неясным - часть проблемы, которую я испытываю в поиске решения, заключается в том, чтобы выразить то, что происходит не так. Надеюсь, что, опубликовав мою неудачную попытку описания, у кого-то может быть точно правильный вопрос, чтобы спросить меня и, таким образом, ключ к ответу!
Это также происходит как ответвление другой проблемы, которую я пытаюсь решить. Когда я запускаю экспорт, я показываю анимированный UIActivityView, но при попытке скрыть по завершении, примерно через 20 секунд после завершения (NSLog-ed), что UIActivityView, наконец, скрывает