欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IOS中忽略警告的三种方法

程序员文章站 2022-05-31 13:29:20
...

开发中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之间代码的警告)

步骤一:
IOS中忽略警告的三种方法

步骤二:
IOS中忽略警告的三种方法

步骤三:
IOS中忽略警告的三种方法

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

步骤一:
IOS中忽略警告的三种方法

步骤二:
IOS中忽略警告的三种方法

步骤三:

现在要在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则后面所有的代码都具有强制消除警告作用

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