Так что я тоже пытался писать фильмы в фоновом потоке, и я использовал пример кода, который был у Apple, который очень похож на ваш, но я нашел что-то странное.
Я начал пытаться увидеть, где произошла поломка, и обнаружил, что
[movie detachFromCurrentThread]
действительно провалился (вы можете проверить себя очень быстро, он возвращает BOOL успеха.
Я не могу понять, что мешает QTKit выполнить отсоединение, я попытался установить различные атрибуты, и ничто не меняет эту ошибку при отсоединении. Немного странно, что отсоединение не вызывает больше проблем, но по какой-то причине кажется, что остальная часть кода продолжает работать в основном потоке. Он все еще работает, когда не удается отсоединиться, он просто делает то, что вы говорите, и замораживает пользовательский интерфейс.
Дальнейшее исследование дало мне исправление: если вы немного углубитесь в рамки QuickTime, вы можете получить функцию:
OSErr er = DetachMovieFromCurrentThread([movie quickTimeMovie]);
, который на самом деле делает отсоединение для меня при сбое вызова QTKit. Фильм тогда счастливо написан на заднем плане, и пользовательский интерфейс больше не зависает.
Надеюсь, это поможет вам.