我将 Class 类型作为参数传递给方法,XCode 4.5.2 中的 LLVM 编译器生成警告“找到多个名为 'foo' 的方法”,这是可以理解的,但在这种情况下是不希望的。如何通过禁用此类警告或更改我的代码来消除此警告?
- (void) fooWithClass: (Class) theClass
{
[theClass aClassMethodOfThatClass];
}
更具体地说,参数是某个基类的子类,我正在发送一条在该基类中声明的消息。
我将 Class 类型作为参数传递给方法,XCode 4.5.2 中的 LLVM 编译器生成警告“找到多个名为 'foo' 的方法”,这是可以理解的,但在这种情况下是不希望的。如何通过禁用此类警告或更改我的代码来消除此警告?
- (void) fooWithClass: (Class) theClass
{
[theClass aClassMethodOfThatClass];
}
更具体地说,参数是某个基类的子类,我正在发送一条在该基类中声明的消息。
停用-Wall
对我不起作用,以防有人仍然感兴趣:在 LLVM 手册中挖掘之后,我发现使用 Peres 的方法(从 Xcode 7 开始)需要忽略的确切警告是:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-selector-match"
// code
#pragma GCC diagnostic pop
要禁用警告,您可以查看clang 手册。像这样:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
[theClass aClassMethodOfThatClass];
#pragma GCC diagnostic pop