抑制警告:来自xx的类别中的元方法xx与来自另一类别的相同方法冲突

时间:2012-07-27 04:33:15

标签: iphone ios xcode

如何禁止此编译器警告: 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 Web服务包装器自动生成的。

P.S。此警告仅在XCode 4.4中发布

提前非常感谢你。

4 个答案:

答案 0 :(得分:49)

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

答案 1 :(得分:5)

项目中的其他位置,+[Soap prefix]正在一个类别中声明。尝试在项目中搜索+prefix的其他声明。

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

答案 2 :(得分:2)

在我的情况下,问题是由于project.pbxproj的错误合并(类似于Nick Forge的案例),这导致对同一文件的引用太多(但是文件在磁盘上只是物理上一次)。当我删除冗余引用时,警告停止显示。

答案 3 :(得分:1)

你应该引用一些同样发表类似内容的人的答案:

Is there a way to suppress warnings in Xcode?

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