IOS中忽略警告的三种方法

开发中xcode常常会提示一些警告,有些警告需要我们注意,并修改我们的代码,但有些警告又不是修改代码就可以去除的,对于有强迫症,容不得警告存在的程序猿来说,就是让人抓狂的一件事了。本文会详细讲解如何忽略项目中的一些警告。

相信很多人都会在代码里面使用一些三方库,目前很多的三方库都会自带很多编译器警告。有些时候你不想看到这些警告或者其实你已经确认没有问题它缺仍然报错的时候,然而Clang提供了一个方便的方法来解决这一切。通过使用#pragma clang diagnostic push/pop,你可以告诉编译器仅仅为某一特定部分的代码(最初的诊断设置在最后的pop被恢复)来忽视特定警告。

比如在使用afnetworking

// completionBlock在AFURLConnectionOperation中被手动的设置为nil来打破保留周期。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"

self.completionBlock=^{...};

#pragma clang diagnostic pop

这个来自于AFNetworking的代码是一个不可避免的静态分析器警告的例子。Clang注意到块中指向self的强引用,并警告可能的保留周期。然而,setCompletionBlock的super实现通过在块结束时将强引用设置为nil来解决这个问题。因此我们使用#pragma clang diagnostic push/pop来忽视它。

当然,最好不用用这个方法来把所有的警告都这样忽视了,因为很多警告真的是警告。

方式一: 忽略单个警告(可以忽略push和pop之间代码的警告)

步骤一:
步骤一:

步骤二:
步骤二:

步骤三:
步骤三:

方式二: 忽略某个类型的所有警告

步骤一:
步骤一:

步骤二:
步骤二:

步骤三:

现在要在Other Warnming Flags填写 “警告名称” 有一些小变化
-Wformat —-> -Wno-format
-Wunused-variable —-> -Wno-unused-variable
-Wundeclared-selector —-> -Wno-undeclared-selector
-Wint-conversion —-> -Wno-int-conversion

方式三:

可以在pch等具有大范围作用域的头文件中包含:
#pragma clang diagnostic ignored “警告名称”
如果剔除了push与pop则后面所有的代码都具有强制消除警告作用

如果觉得对您有用的话,欢迎加关注哦!
如有问题,欢迎评论交流!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值