對於Objective C我還是比較新的,並且很容易被各種類型所困惑。我正在使用SquareCam示例項目中的代碼,併入大型項目中。它工作正常,但現在我想保存videoDataOutputQueue,它是dispatch_queue_t類型,以便我可以在項目的其他地方使用它。它必須通過一些C++代碼才能最終回到Objective C代碼中。因此,我試圖將它添加到我已經具有的結構中,作爲void *(void * videoDataOutputQueue;)如何將dispatch_queue_t分配給結構中的變量
但是,我沒有找到正確的方式來分配它,但未收到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>
}
顯然,這是不正確的做法,我不明白我在做什麼。我有其他帖子的提示,但我錯過了一些東西。
感謝, 肯
我很抱歉,我急着趕緊提出了這個問題,真的搞砸了代碼,並沒有顯示我保留的地方未來參考的對象和其他錯誤。無論如何,我感謝你的幫助。我沒有意識到這是一個C類型,這有幫助。我明天要清理這個,然後再試一次。 – user938797
如果dispatch_queue_t是C類型,那麼我應該可以將它添加到我的結構中,並且應該都是好的。但是當我嘗試,在我.h文件中我得到「未知類型名‘dispatch_queue_t’如果我創建該類型的獨立變量則是罰款 typedef結構{ 布爾debug_images; BOOL debug_segments; 等.... dispatch_queue_t videoqueue; << ---這裏的錯誤 } mystruct dispatch_queue_t othervideqoqueue; << ---這很好 我錯過了什麼? 謝謝, – user938797
你忽略了包含必要的頭文件:'#include'。 –