Impossibile inizializzare il parametro e non capisco il motivo per cui
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?
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