Domanda

ottengo questo errore:

Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'

Da questa riga di codice:

ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
                                                           OneDMode:NO];

Come posso risolvere questo?

È stato utile?

Soluzione

Grazie al commento di Macmade sono riuscito a risolvere il problema. Ho dovuto scrivere in questo modo:

ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES 
                                                                     OneDMode:NO];

Dove (id) è il cast a ponte di cui stava parlando.

Altri suggerimenti

utilizzare questa linea off codice per questo problema

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];

Se ho capito bene, problema non è che avete bisogno di getto a ponte, piuttosto la classe FirstViewController non sta definendo ZXingDelegate classe di interfaccia, così il problema.

ZXingDelegate è (in base al nome immagino) classe di interfaccia (protocollo, o suo delegato), che dichiara le funzioni (interfaccia) che deve essere definita dalla classe che eredita (a meno che siano @optional). Qualcosa di simile a classi puro-virtuali (abstract) in C ++.

Così avresti bisogno nel vostro qualcosa di file di intestazione in questo modo:

@interface FirstViewController : UIViewController <ZXingDelegate>

E nel file .m, qualcosa di simile a questo:

@implementation FirstViewController

//......
-(void) SomeFunctionThat_ZXingDelegate_declares
{
    // .... do something here....
}
//......


@end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top