【问题标题】:Suppress warning: Meta method xx in category from xx conflicts with same method from another category抑制警告:来自 xx 的类别中的元方法 xx 与来自另一个类别的相同方法冲突
【发布时间】:2012-07-25 18:13:01
【问题描述】:

如何抑制此编译器警告: Meta method 'prefix' in category from '...soap+prefix.o' conflicts with same method from another category ? 这里是soap+Prefix.h的类别:

  @interface Soap (Prefix)

   +(NSString*)prefix;

   @end

和soap+prefix.m:

#import "Soap.h"
#import "Soap+Prefix.h"

 @implementation Soap (Prefix)

  +(NSString*)prefix { return @"EInspector"; }

  @end

顺便说一下,这两个文件是用SudZc wrapper for web services自动生成的。

附言此警告仅在 XCode 4.4 中发出

非常感谢您。

【问题讨论】:

    标签: iphone ios xcode


    【解决方案1】:

    当我不小心导入了类别 (.m) 的实现文件而不是头文件 (.h) 时,我发生了这种情况。

    【讨论】:

    • 这也是我的情况!谢谢!
    【解决方案2】:

    在您项目的其他地方,+[Soap prefix] 被声明在一个类别中。尝试在您的项目中搜索+prefix 的其他声明。

    另一种可能性是,在您的 project.pbxproj 文件的大型重构或复杂合并期间,项目最终会得到同一个文件的两个引用或副本,并且两者都在编译。我已经看到它发生了,并且通常会发生这种警告或错误。尝试在 Finder 中搜索其他同名文件,看看是否有重复文件。

    【讨论】:

    • +[Soap前缀]在项目的两个文件中声明了,虽然之前找过但是找不到多个文件,今天找到了两个文件,非常感谢答案。你也可以投票赞成我的问题;)
    【解决方案3】:

    在我的情况下,问题是由于 project.pbxproj 的错误合并(与 Nick Forge 的情况非常相似),这导致对同一文件的引用过多(但是该文件在磁盘上物理上只有一次)。当我删除多余的引用时,警告停止出现。

    【讨论】:

      【解决方案4】:

      您应该参考也发布了类似内容的人的一个很好的答案:

      Is there a way to suppress warnings in Xcode?

      在我看来,第二个(最高投票)选项是最好的!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-02
        • 2014-03-01
        • 1970-01-01
        • 2015-04-06
        • 2012-03-14
        • 2022-01-04
        • 1970-01-01
        相关资源
        最近更新 更多