无法初始化参数,我不明白为什么

时间:2011-11-29 09:27:55

标签: ios zxing

我收到此错误:

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

从这行代码:

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

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

感谢Macmade的评论,我设法解决了这个问题。我应该这样写:

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

其中(id)是他所谈论的桥接演员。

答案 1 :(得分:1)

使用此行代码解决此问题

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

答案 2 :(得分:0)

如果我理解正确,问题不是你需要桥接转换,而是你的FirstViewController类没有定义ZXingDelegate接口类,因此问题。

ZXingDelegate是(基于我猜的名称)接口类(协议或委托),它声明必须由继承它的类定义的函数(接口)(除非它们是@optional)。类似于C ++中的纯虚拟(抽象)类。

所以你在头文件中需要这样的东西:

@interface FirstViewController : UIViewController <ZXingDelegate>

在你的.m文件中,有这样的内容:

@implementation FirstViewController

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


@end