No se puede inicializar el parámetro y no entiendo por qué
Pregunta
Entiendo este error:
Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'
De esta línea de código:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
OneDMode:NO];
¿Como puedo resolver esto?
Solución
Gracias al comentario de MacMade, logré resolver el problema. Debería haberlo escrito de esta manera:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES
OneDMode:NO];
Donde (id) está el elenco puente del que estaba hablando.
Otros consejos
Use esta línea de código de apagado para este problema
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];
Si entiendo esto correctamente, el problema no es que necesite un reparto puenteado, sino que su clase de controlador de visión firstview no está definiendo la clase de interfaz ZxingDelegate, por lo tanto, el problema.
ZxingDelegate es (basado en el nombre de la clase de interfaz (protocolo o delegado) que declara funciones (interfaz) que deben definirse por clase que la hereda (a menos que sean @Optionales). Algo como clases puras-virtuales (abstractas) en C ++.
Entonces necesitaría en su archivo de encabezado algo como esto:
@interface FirstViewController : UIViewController <ZXingDelegate>
Y en su archivo .m, algo como esto:
@implementation FirstViewController
//......
-(void) SomeFunctionThat_ZXingDelegate_declares
{
// .... do something here....
}
//......
@end