Objective c XCode/静态分析器:抑制保留计数/泄漏警告

Objective c XCode/静态分析器:抑制保留计数/泄漏警告,objective-c,xcode,clang-static-analyzer,Objective C,Xcode,Clang Static Analyzer,我有一个函数,它正在创建一个变量,但没有释放它。它将这个对象连同一条消息传递给另一个处理内存管理的函数 我的问题是如何抑制静态分析器警告,因为XCode认为它是一个过度保留的变量?我想我可以为创建它的函数使用NS_RETURNS_RETAINED,但这不起作用。我想知道这是否与变量通过消息传递的事实有关?我不建议取消警告,因为它们存在是有充分理由的。编码良好的应用程序有大量的测试,几乎没有内存泄漏 但是,您可以通过转到Xcode检查器并在搜索框中键入“memory”来禁用Xcode 4中的警告。

我有一个函数,它正在创建一个变量,但没有释放它。它将这个对象连同一条消息传递给另一个处理内存管理的函数


我的问题是如何抑制静态分析器警告,因为XCode认为它是一个过度保留的变量?我想我可以为创建它的函数使用NS_RETURNS_RETAINED,但这不起作用。我想知道这是否与变量通过消息传递的事实有关?

我不建议取消警告,因为它们存在是有充分理由的。编码良好的应用程序有大量的测试,几乎没有内存泄漏


但是,您可以通过转到Xcode检查器并在搜索框中键入“memory”来禁用Xcode 4中的警告。将有一列包含相关选项。在右侧,您可以选择一个选项。

您可以通过执行以下操作来抑制内存警告:

  • 选择目标
  • 选择构建阶段
  • 选择complile源
  • 查找要抑制其警告的文件
  • 双击编译器标志,将其设置为:

    -w-Xanalyzer-分析器禁用检查器


  • 你能提供更多有关函数的详细信息吗,也许是一些(伪)代码?@Yuji考虑一个C内存数据库,它使用
    void*
    内存指针。我想在那里存储一个
    CFDictionaryRef
    ,但为了确保它保持活动状态,我必须调用
    CFRetain
    ,analyzer抱怨这是一个泄漏,但事实并非如此,我仍然可以随时获取对dict的引用,当它从内存数据库中删除时,我也会对它执行
    CFRelease