与Ben Gottlieb的问题类似,我有一些过时的调用在困扰我。是否有一种方法可以按行抑制警告?例如:
if([[UIApplication sharedApplication]
respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning
}
我只关心那一行代码。我不想关闭所有过时警告。我也不想做类似于按文件抑制特定警告的事情。
还有其他一些情况,我希望标记一个特定的代码行是可以的,即使编译器生成了一个警告。我基本上想让我的团队知道问题已经处理好了,不再反复提醒同一行代码的问题。
#pragma GCC diagnostic ...
(http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html),您可以在文件级别上基于特定需求禁用某些警告,这种方式比文件级别的构建设置更为明显。这需要使用 GCC 4.2+ 版本,并且必须放置在翻译单元的最顶部。 - mbaumanid
发送选择器时,编译器会检查至少有一个类能够响应这样的选择器。对于已弃用的选择器可能并非总是如此。如果没有,则会引发未找到方法的警告。因此,添加协议是更健壮的解决方案;它将始终避免警告的出现。 - mbaumanid
将始终起作用。 - user102008