忽略 "Undeclared selector..." 的 Warning

1
2
3
4
if ([someObject respondsToSelector:@selector(someSelector)])
{
[someObject performSelector:@selector(someSelector)];
}

以上这句代码,除非你在 someObject 的头文件中显式地声明了 someSelector,否则在 Xcode 中会提示警告:

Undeclared selector 'someSelector'

但很多情况下我们并不想去声明它,此时我们可以禁用编译器的此类警告:

1
#pragma GCC diagnostic ignored "-Wundeclared-selector"

这样将会在整个文件内禁用此类警告,也可只在部分代码处禁用,保证编译器依然会对文件内其他代码进行警告检测,避免出现预料之外的 bug:

1
2
3
4
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
// 需要禁用警告的代码
#pragma clang diagnostic pop