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则后面所有的代码都具有强制消除警告作用
如果觉得对您有用的话,欢迎加关注哦!
如有问题,欢迎评论交流!
上一篇: ajax修改弹出框数据
下一篇: layer-v2.4弹层组件使用示例
推荐阅读
-
jsp页面中插入css样式的三种方法总结
-
C#中获取、生成随机数的三种方法
-
C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法
-
iOS App使用设计模式中的模板方法模式开发的示例
-
iOS应用设计模式开发中对简单工厂和工厂方法模式的运用
-
改变iOS应用中UITableView的背景颜色与背景图片的方法
-
详解iOS App开发中改变UIButton内部控件的基本方法
-
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
-
PHP中遍历数组的三种常用方法实例分析
-
将input框中输入内容显示在相应的div中【三种方法可选】