2011-11-29 19 views
5

Este es el error que consigo:No se puede inicializar el parámetro y yo no entiendo por qué

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

partir de esta línea de código:

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

¿Cómo puedo solucionar esto?

+0

ARC supongo? Entonces necesitarás un elenco con puente. – Macmade

+0

¿Puedes explicarme un poco cómo puedo hacer eso? Y sí, ARC – Pillblast

+0

No importa, busqué en Google y descubrí qué es un bridget. Muchas gracias por la respuesta, me gustaría poder elegir un comentario como respuesta – Pillblast

Respuesta

5

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 molde puente del que estaba hablando.

1

uso de esta línea de código para este problema

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

Si entiendo esto correctamente, problema no es que se necesita fundido en puente, en lugar de su clase FirstViewController no es la definición de clase de interfaz ZXingDelegate, por lo tanto el tema.

ZXingDelegate es (en base al nombre, supongo) la clase de interfaz (protocolo o delegado) que declara funciones (interfaz) que deben definirse por clase que lo hereda (a menos que sean @opcionales). Algo así como clases puramente virtuales (abstractas) en C++.

Así que lo que se necesita en el archivo de cabecera o menos así:

@interface FirstViewController : UIViewController <ZXingDelegate> 

Y en su archivo .m, algo como esto:

@implementation FirstViewController 

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


@end 
Cuestiones relacionadas