我对Objective C还是比较陌生,很容易被各种类型混淆。我正在使用 SquareCam 示例项目中的代码,该代码已合并到一个更大的项目中。它工作正常,但现在我想保存类型为 dispatch_queue_t 的 videoDataOutputQueue,以便我可以在项目的其他地方使用它。它必须通过一些 C++ 代码才能最终返回到 Objective C 代码。因此,我试图将它添加到我已经拥有的结构中,作为 void * (void *videoDataOutputQueue;)
但是,我还没有找到正确的方法来分配它而不会出现 EXC_BAD_ACCESS 运行时错误。由于 dispatch_queue_t 是一个 C++ 对象,我不能只使用它的地址吗?
declared in the interface for squarecamviewcontroller:
@interface SquareCamViewController : UIViewController <UIGestureRecognizerDelegate, AVCaptureVideoDataOutputSampleBufferDelegate,UIActionSheetDelegate>
{
AVCaptureVideoPreviewLayer *previewLayer;
AVCaptureVideoDataOutput *dataOutput;
AVCaptureVideoDataOutput *videoDataOutput;
dispatch_queue_t videoDataOutputQueue;
<other stuff>
}
稍后在代码中:
- (void)setupAVCapture
{
<other stuff from the sample code>
MYSTRUCT myStruct = (MYSTRUCT)struct; // make a pointer to the structure
myStruct->videoDataOutputQueue = (void *)videoDataOutputQueue; <<<- bad access here at runtime
<other stuff>
}
显然这不是正确的方法,我不明白我在做什么。我从其他帖子中得到了一些提示,但我遗漏了一些东西。
谢谢,肯