5

如何抑制此编译器警告: 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

和肥皂+前缀.m:

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

 @implementation Soap (Prefix)

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

  @end

SudZc顺便说一下,这两个文件是使用Web 服务的包装器自动生成的。

ps 此警告仅在 XCode 4.4 中发出

非常感谢你。

4

4 回答 4

52

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

于 2012-08-25T12:44:05.440 回答
4

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

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

于 2012-07-31T04:00:47.367 回答
3

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

于 2014-05-08T08:54:36.243 回答
1

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

有没有办法抑制 Xcode 中的警告?

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

于 2012-07-31T03:55:14.930 回答