切记不是所有警告都可以直接忽略的
- 只屏蔽
无关紧要
的警告,目的是让我们更加快速找到需要修复的警告 - 有些警告是代码编写本身有误,可能引起Bug,需要及时修复
执行代码诊断命令
- 在Xcode中运行
Build & Analyze(⌘⇧B)
后你会得到的惊人结果 - 这是Clang 的更细腻,更深沉一面的功能
- Clang是 C / Objective-C 的前端的 LLVM 编译器。
- Clang对 Objective-C 的语义和语法有着深刻的理解,而且更重要的原因是现在 Objective-C 已经是这样一个有能力的语言了。
打开Treat Warnings as Errors
配置
- 在
Build Settings
搜索Treat Warnings as Errors
并设置为YES - 设置
-Weverything
标志 - 这样设置后大部分项目是无法编译过的,可以有针对性的进行优化,我个人支持这个建议,并鼓励其他开发者更严肃的对待编译警告
去除pod库的警告
- 在podfile文件中添加如下配置
# 忽略所有警告
inhibit_all_warnings!
# 忽略指定库的警告
pod 'AFNetworking', :inhibit_warnings => true
- 然后执行:
pod install
警告:Pointer is missing a nullability type specifier
- 苹果提供了两个宏来去除此类警告
- 使用此宏包住多个属性使其具备
nonnull
(不可空),然后仅对需要nullable
(可空)的改下就行
NS_ASSUME_NONNULL_BEGIN
coding...
NS_ASSUME_NONNULL_END
- 使用方法:在
.h文件
的头部和尾部添加两个宏
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface XXXModel : NSObject
@end
NS_ASSUME_NONNULL_BEGIN
- 使用了上面的宏后出现警告
Null passed to a callee that requires a non-null argument
,对需要nullable
(可空)的改下就可以去除此警告
打开Treat Incompatible Pointer Type Warnings as Errors
开关
- 开启后类型不兼容会报错,而不是警告
去除directory not found for option
警告
- 在
TARGETS
选在对应的项目 - 在
Build Settings
里找到Library Search Paths
和Framework Search Paths
删除找不到的路径即可
去除This block declaration is not a prototype
警告
- 在
Build Settings
里找到Strict Prototypes
设置为NO即可
关闭工程中指定类型的警告的设置步骤
- 选中指定类型的警告,选择
Reveal in Log
,如下图操作
右键Reveal in Log查看指定类型的警告 -
则会显示下图
指定类型的警告 -
[-Wshorten-64-to-32]
中括号中的就是警告类型 -
-W
表示打开
指定类型的警告 -
-Wno-
表示关闭
指定类型的警告 - 将
-W
换成-Wno-
变成-Wno-shorten-64-to-32
- 将此类型的警告的忽略配置添加到
Other Warning Flags
中,如下图
忽略指定类型的警告