如何禁止此编译器警告:
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中发布
提前非常感谢你。
答案 0 :(得分:49)
当我意外地导入类别(.m)的实现文件而不是头文件(.h)时,发生了这种情况。
答案 1 :(得分:5)
项目中的其他位置,+[Soap prefix]
正在一个类别中声明。尝试在项目中搜索+prefix
的其他声明。
另一种可能性是,在您的project.pbxproj
文件的大型重构或复杂合并期间,项目最终会有两个引用或同一文件的副本,并且两者都在编译中。我已经看到它发生了,这些警告或错误通常会发生。尝试在Finder中搜索具有相同名称的其他文件,以查看某处是否有重复文件。
答案 2 :(得分:2)
在我的情况下,问题是由于project.pbxproj的错误合并(类似于Nick Forge的案例),这导致对同一文件的引用太多(但是文件在磁盘上只是物理上一次)。当我删除冗余引用时,警告停止显示。
答案 3 :(得分:1)