Я все еще относительно новичок в 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“Если я создаю отдельные переменные этот типа, то это прекрасно ЬурейиХ структуры { BOOL debug_images;. BOOL debug_segments; и т.д. .... dispatch_queue_t videoqueue; << --- ошибка здесь } mystruct dispatch_queue_t othervideqoqueue; << --- это нормально Что мне не хватает? thanks, – user938797
Вы пренебрегли включением нужного заголовка: '#include'. –