У меня проблема при склеивании переменных c ++ с асинхронным кодом obj-c на iOS.
Настоящая проблема заключается в асинхронном коде, я использую сторонние библиотеки, встроенные в C ++которые ожидают ссылки на объекты, например:
- (void) processFrame:(cv::Mat &)mat;
Моя проблема реальная проблема заключается в том, как это вызвать?Мне нужно создать объект c ++ в другом потоке и передать его в асинхронный код, примерно так:
__block cv::Mat mat(videoRect.size.height, videoRect.size.width, CV_8UC4, baseaddress, 0);
dispatch_async(dispatch_get_main_queue(), ^{
[self processFrame:mat];
});
, которые выдают ошибку (неверный доступ), проблема в (я думаю)объект уничтожается до запуска метода, поэтому я попытался создать объект в куче:
__block cv::Mat *mat= new cv::Mat(videoRect.size.height, videoRect.size.width, CV_8UC4, baseaddress, 0);
dispatch_async(dispatch_get_main_queue(), ^{
[self processFrame:(*mat)];
});
И все же:
__block cv::Mat *mat= new cv::Mat(videoRect.size.height, videoRect.size.width, CV_8UC4, baseaddress, 0);
dispatch_async(dispatch_get_main_queue(), ^{
[self processFrame:mat];
});
Я все время получаю ошибки «Плохой доступ»
Есть идеи?