首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法初始化参数,我不明白原因

无法初始化参数,我不明白原因
EN

Stack Overflow用户
提问于 2011-11-29 17:27:55
回答 3查看 9.9K关注 0票数 5

我得到了这个错误:

代码语言:javascript
运行
复制
Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'

在这行代码中:

代码语言:javascript
运行
复制
ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
                                                           OneDMode:NO];

我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-05 16:24:00

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

代码语言:javascript
运行
复制
ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES 
                                                                     OneDMode:NO];

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

票数 5
EN

Stack Overflow用户

发布于 2012-12-10 22:17:53

使用下面这行代码来解决这个问题

代码语言:javascript
运行
复制
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];
票数 1
EN

Stack Overflow用户

发布于 2014-08-07 11:50:24

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

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

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

代码语言:javascript
运行
复制
@interface FirstViewController : UIViewController <ZXingDelegate>

在您的.m文件中,如下所示:

代码语言:javascript
运行
复制
@implementation FirstViewController

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


@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8308427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档