Parameter kann nicht initialisieren und ich verstehe nicht warum
Frage
Ich bekomme diesen Fehler:
Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'
Aus dieser Codezeile:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
OneDMode:NO];
Wie kann ich das lösen?
Lösung
Dank MacMades Kommentar habe ich es geschafft, das Problem zu lösen. Ich hätte es so schreiben sollen:
ZXingWidgetController *widController =
[[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES
OneDMode:NO];
Wo (id) die überbrückte Besetzung ist, über die er sprach.
Andere Tipps
Verwenden Sie diesen Code für dieses Problem aus diesen Zeilen -Code
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];
Wenn ich das richtig verstehe, ist das Problem nicht, dass Sie überbrückte Besetzung benötigen, sondern Ihre FirstViewController -Klasse nicht die Zxingdelegate -Schnittstellenklasse definiert, somit das Problem.
Zxingdelegate ist (basierend auf der Namensname) Schnittstellenklasse (Protokoll oder Delegierter), die Funktionen (Schnittstelle) deklariert, die durch die Klasse definiert werden müssen, die sie erbt (es sei denn, sie sind @Optional). So etwas wie reine (abstrakte) Klassen in C ++.
Sie würden also in Ihrer Header -Datei so etwas benötigen:
@interface FirstViewController : UIViewController <ZXingDelegate>
Und in Ihrer .m -Datei so etwas:
@implementation FirstViewController
//......
-(void) SomeFunctionThat_ZXingDelegate_declares
{
// .... do something here....
}
//......
@end