Impossible d'initialiser le paramètre et je ne comprends pas pourquoi
Question
je reçois cette erreur:
Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'
A partir de cette ligne de code:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
OneDMode:NO];
Comment puis-je résoudre ce problème?
La solution
Merci au commentaire de Macmade j'ai réussi à résoudre le problème. Je l'ai écrit ainsi:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES
OneDMode:NO];
Où (id) est le casting ponté dont il parlait.
Autres conseils
utiliser cette ligne de code pour cette question
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];
Si je comprends bien, problème n'est pas que vous avez besoin moulé ponté plutôt votre classe FirstViewController ne définit pas la classe d'interface ZXingDelegate, donc la question.
ZXingDelegate est (en fonction du nom, je suppose) classe d'interface (protocole, ou son délégué) qui déclare fonctions (interface) qui doit être définie par la classe héritant (sauf si elles sont @optional). Quelque chose comme des classes virtuelles pur (résumé) en C ++.
Vous auriez besoin dans votre fichier d'en-tête quelque chose comme ceci:
@interface FirstViewController : UIViewController <ZXingDelegate>
Et dans votre fichier .m, quelque chose comme ceci:
@implementation FirstViewController
//......
-(void) SomeFunctionThat_ZXingDelegate_declares
{
// .... do something here....
}
//......
@end