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];
  });
}
Другие вопросы по тегам