自动参考计数:指向非const类型“ nserror *”的指针,没有明确所有权
-
25-10-2019 - |
题
在更新与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 **是您想要的,这应该有效。
不隶属于 StackOverflow