Objective-C++ cannot initialize parameter of type id<...> with lvalue of type MyType *__strong even though it conforms to protocol -


i'm trying use avkit in osx objective-c++ application, , have videosource class conforms avcaptureaudiodataoutputsamplebufferdelegate, compiler won't accept parameter of type id<avcapturevideodataoutputsamplebufferdelegate>. error: capture.mm:30:48: cannot initialize parameter of type 'id<avcapturevideodataoutputsamplebufferdelegate>' lvalue of type 'videosource *__strong'

this code:

capture.h

#ifndef threesai_capture_h #define threesai_capture_h  #ifdef __objc__  #import <foundation/foundation.h> #import <avfoundation/avfoundation.h>  @interface videosource : nsobject <avcaptureaudiodataoutputsamplebufferdelegate>  @property avcapturesession *s;  - (id) init;  @end  #endif  void hello();  #endif 

capture.mm

#import "capture.h"  @implementation videosource  - (id) init {     if (self = [super init]) {         self.s = [[avcapturesession alloc] init];         avcapturedevice *camera = [avcapturedevice deviceswithmediatype:avmediatypevideo][0];         nserror *e;         avcaptureinput *camerainput = [avcapturedeviceinput deviceinputwithdevice:camera error:&e];         [self.s addinput:camerainput];          avcapturevideodataoutput *captureoutput = [[avcapturevideodataoutput alloc] init];         captureoutput.alwaysdiscardslatevideoframes = yes;         dispatch_queue_t queue;         queue = dispatch_queue_create("cameraqueue", null);         [captureoutput setsamplebufferdelegate:self queue:queue];//error on line          [self.s addoutput:captureoutput];         [self.s startrunning];     }     return self; }  - (void) captureoutput:(avcaptureoutput *)captureoutput didoutputsamplebuffer:(cmsamplebufferref)samplebuffer fromconnection:(avcaptureconnection *)connection {     nslog(@"asdasd"); }  @end  void hello() {     videosource *v = [[videosource alloc] init]; } 

i'm not sure what's this, seems videosource should of type id<avcaptureaudiodataoutputsamplebufferdelegate>. what's going on?

you using avcapturevideodataoutput, you've declared conformance avcaptureaudiodataoutputsamplebufferdelegate protocol. protocols use same method, can change name of protocol (or adopt both if desire).


Comments

Popular posts from this blog

php - Admin SDK -- get information about the group -

dns - How To Use Custom Nameserver On Free Cloudflare? -

Python Error - TypeError: input expected at most 1 arguments, got 3 -