Mediapipe: как правильно освободить MPPGraph
Мне неясно, как правильно остановить и освободить MPPGraph. Я создал структуру, очень похожую на эту. Это исключение генерируется каждый раз, когда каким-либо образом вызывается освобождение.Thread 1: Exception: "waitUntilDoneWithError: should not be called on the main thread"
.
Я не знаю, как не называть это в основном потоке, и надеялся, что у кого-то есть какое-то представление об этом.
Здесь вы можете найти быстрый код, вызывающий структуру mediapipe. Этот пример был создан с помощью фреймворка, который можно найти здесь.
1 ответ
Решение
Для тех, кто сталкивается с такой же проблемой. Это было рассмотрено здесь, и было предложено решение.
Изменить: этот последний бит может быть неправильным, но я использовал dealloc таким образом:
- (void)dealloc {
self.mediapipeGraph.delegate = nil;
[self.mediapipeGraph cancel];
// Ignore errors since we're cleaning up.
[self.mediapipeGraph closeAllInputStreamsWithError:nil];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self.mediapipeGraph waitUntilDoneWithError:nil];
});
}