在更新与iOS 5 SDK兼容的一些代码时,我试图通过在Xcode中使用“转换为Objective-C Arc”来重构代码并收到错误。该错误发生在我的.h文件中的实例变量上。

NSError **_error;

该错误说“指向非const类型'nserror *'的指针,没有明确的所有权。”我该如何解决?

有帮助吗?

解决方案

存储时 NSError 实例变量中的对象您必须将其声明为一个简单的指针:

@interface Foo : NSObject
{
    NSError *_errror;
}

NSError ** 仅用于间接返回 NSError 从方法到呼叫者的对象。将其存储在实例变量中是(可能)错误。

其他提示

您可以使用在 过渡到电弧发行说明

对于nserror **,您将使用__autoreleaping,所以尼古拉提供的示例然后看起来像这样

@interface Foo : NSObject
{
    NSError * __autoreleasing *error;
}

语法有些怪异,您应该遵循Nikolais的建议,但是如果您确定nserror **是您想要的,这应该有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top