首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

去除iOS项目中无用的警告

2024-12-20 来源:化拓教育网

切记不是所有警告都可以直接忽略的

  • 只屏蔽无关紧要的警告,目的是让我们更加快速找到需要修复的警告
  • 有些警告是代码编写本身有误,可能引起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 PathsFramework 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中,如下图
    忽略指定类型的警告

参考资料

显示全文