如何修复警告“没有明确的所有权”

Posted

技术标签:

【中文标题】如何修复警告“没有明确的所有权”【英文标题】:How to fix warning 'no explicit ownership' 【发布时间】:2014-03-24 11:36:54 【问题描述】:

我有将间接指针作为参数的方法,然后,如果出错,将其设置为错误对象。我正在尝试打开尽可能多的警告。但其中之一 - Implicit ownership types on out parameters - 在此方法中生成警告:

- (id)doWithError:(NSError **)error 
    ...

如何修复代码以消除警告?

【问题讨论】:

【参考方案1】:

您可以通过将方法声明为来修复该警告

- (id)doWithError:(NSError * __autoreleasing *)error 
    // ...

__autoreleasing 所有权限定符隐式假定用于“out-parameters” (参见Clang/ARC documentation 中的“4.4.2 间接参数”), 因此显式添加它不会更改代码。

【讨论】:

行得通!谢谢!但不知何故,它不适用于另一种方法-(id)doWithItemTags:(NSMutableDictionary * __autoreleasing *)itemTags @Ossir:我无法重现该问题。 -(id)doWithItemTags:(NSMutableDictionary * __autoreleasing *)itemTags 不会对我造成编译器警告,即使是 -Weverything 我已经清理并构建了几次,警告仍然存在:dropbox.com/s/bg62g4vfjk340z1/…我会尝试删除派生数据 抱歉,由于我的注意力不集中,在正确清除 Xcode 起点指向该参数后,方法声明中多了一个 NSMutableDictionary **=)

以上是关于如何修复警告“没有明确的所有权”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Hadoop 警告:在 Ubuntu 上发生非法反射访问操作错误

如何修复 brew doctor 警告

在我创建的所有新项目中,我无法修复 vscode 的 JSHint 插件中的“let”警告

如何修复代码分析警告[重复]

如何修复警告:初始化程序周围缺少大括号?

如何修复“UIPopoverController 已弃用”警告?