1
iOSでobj-c非同期コードを使用してC++変数を結合する際に問題が発生しています。Objective-Cブロック、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];
});
、問題がある:私は別のスレッドでのC++オブジェクトを作成し、このようなビットは、非同期コードにそれを渡す必要がありますメソッドが実行される前に破壊されたので、私は、ヒープ内のオブジェクトを作成してみました:
__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];
});
私は
「不正アクセス」のエラーのすべての時間を保ちますアイデア?
アンサーに感謝します。私はヒープ内にオブジェクトを作成しても、私はまだ同じ問題を抱えています...オブジェクトリファレンスを期待するメソッドにどのように "ヒープオブジェクト"を渡すべきですか? cv :: Mat&mat)? – user361526
ヒープオブジェクトの場合、この '[self processFrame:* mat];'のように渡すと、その呼び出しの直後に '' mat; ''を削除することができます。 – Joe
これまでにも同じエラーがあります:(私はC++とObj-Cの混在を避けることができる別のライブラリを使用しようとします:) – user361526