Iphone 间接指针到带圆弧的objective-c指针的隐式转换
我正在从事一个使用ARC的项目,我在使用已有的一段代码时遇到了问题 代码如下:Iphone 间接指针到带圆弧的objective-c指针的隐式转换,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在从事一个使用ARC的项目,我在使用已有的一段代码时遇到了问题 代码如下: - (id)initWithError:(NSError **)error { if ((self = [super init])) { errorPointer = error; //Getting error here } return self; } 我收到一个错误,上面写着: ARC不允许将间接指针隐式转换为指向“N错误”的objective-c指针 我应
- (id)initWithError:(NSError **)error
{
if ((self = [super init]))
{
errorPointer = error; //Getting error here
}
return self;
}
我收到一个错误,上面写着:
ARC不允许将间接指针隐式转换为指向“N错误”的objective-c指针
我应该如何解决此问题?我试过做桥牌,但没有成功。
感谢您的帮助
哦,为了澄清一下,在.h文件中,我是这样声明变量errorPointer的:
n错误*错误指针
谢谢 errorPointer和error的类型不匹配 根据您在那里的代码,您的
error
参数似乎应该声明为NSError*
它应该是
errorPointer = *error; // no error here
这两个变量在间接程度上有所不同(简单地说,它们声明中的恒星数量不一样)。您需要在
错误
前面添加*
以抵消错误指针
@AdamW的额外*
,绝对正确!因为这个名字,我感到困惑。谢谢只是稍微扩展一下,使用双间接参数(NSError**
)的唯一原因是,如果需要在该init方法中分配错误并使其可供调用方使用。是的,这是Cocoa方法中的常见模式。许多Cocoa框架方法通过传递给该方法的引用NSError*
参数返回错误(如果有)。@AndrewMadsen肯定会这样做……但在这种情况下,他显然不想这样做,因此我建议只更改参数的类型。