Tôi đã gặp sự cố tương tự. Gọi stopRunning sẽ đóng băng ứng dụng trong 8 đến 10 giây.
Tôi cuối cùng đã theo dõi vấn đề này: Tôi đã gọi stopRunning trên một chủ đề khác với chủ đề chính. Chủ đề thứ cấp này được sử dụng cho tất cả các giao dịch cho AVCaptureSession. Vấn đề xảy ra bởi vì sau khi gửi cuộc gọi đến stopRunning, tôi đã chặn chủ đề chính đang chờ nó hoàn tất. Thật không may, stopRunning gửi một cái gì đó đến chủ đề chính và các khối chờ đợi cho rằng để hoàn thành. Điều stopRunning đã chờ đợi trên cuối cùng hết thời gian và báo cáo lỗi trong - (void) onRuntimeError: (NSNotification *) n gọi lại: Tên miền lỗi = AVFoundationErrorDomain Code = -11819 "Không thể hoàn thành hành động" UserInfo = 0x19e43c90 {NSLocalizedRecoverySuggestion = Thử lại sau đó., NSLocalizedDescription = Không thể hoàn thành hành động}
Giải pháp trong trường hợp của tôi không đơn giản là không chặn luồng chính sau khi gọi stopRunning. May mắn thay cho tôi đó là dễ dàng để làm (và một cái gì đó Apple nhiều hơn hoặc ít hơn đề nghị anyway).
Tôi đã nhận thấy các biến thể về chủ đề này trong các câu hỏi khác và giải pháp luôn là làm lại mã. Hy vọng rằng điều này sẽ cung cấp một sự hiểu biết tốt hơn về lý do tại sao vấn đề đang xảy ra.
Nguồn
2014-08-12 15:06:10
Hãy thử cách này: http: //stackoverflow.com/questions/11905505/avcapturesession-stop-running-take-a-long-long-time – nickcheng
Có, điều này dường như giải quyết được vấn đề. Khi bạn thêm nó làm câu trả lời, tôi sẽ chấp nhận nó. –