0

我在使用 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,但是当尝试在完成时隐藏时,UIActivityView 最终隐藏完成(NSLog-ed)后大约 20 秒

4

1 回答 1

0

解决方案:使用 [self performSelectorOnMainThread:@selector(stopActivityIndi​​cator) withObject:nil waitUntilDone:YES];

然后从 -(void)stopActivityIndi​​cator 调用我的视图更改/活动指示器的东西

于 2012-06-19T12:53:16.827 回答