iOS 警告消除(记录贴)
记录接手的项目优化遇到的警告信息和处理方式
1、清除一些需要忽略的警告
Targets -> Build Settings (选择All,搜索custom)-> Apple Clang - Custom Compiler Flags -> Other Warning Flags.
填入要忽略的警告类型
右键警告点击 Reveal in Log 查看报警类型
例如: -Wdocumentation,填入内容为 -Wno-documentation,在W后面添加"no-"。
参考:忽略xcode的警告方法
2、Pod中的第三方库指定编译目标不在Xcode范围内
The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set to 6.0, but the range of supported deployment target versions is 8.0 to 13.6.99.
将下述内容添加在PodFile的最下方,重新执行Pod install。
post_install do |installer|installer.pods_project.targets.each do |target|target.build_configurations.each do |config|config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '8.0'endend
end
参考:iOS小记–warning: The iOS deployment target is set to 6.0, but the range XXX
3、Pod第三方库的警告
在Podfile中加入 “inhibit_all_warnings!”
source 'https://github.com/CocoaPods/Specs.git'platform :ios, '9.0'
inhibit_all_warnings!target "xxxx" do
4、支付宝SDK的警告
(arm64) /Users/intfre/workspace/other/ios-msdk-git/AlipaySDK4Standard/AlipaySDK/Library/UTDID.framework/UTDID(AidManager.o) unable to open object file: No such file or directory
Go to Build Settings -> Build Options -> Debug Information Format
Change the Debug setting from “DWARF with dSYM File” to “DWARF”
Leave the Release setting at “DWARF with dSYM File”
参考:集成支付宝报警告
5、Pod中AFNetworking警告
MobileCoreServices has been renamed. Use CoreServices instead.
提示已经很明确了,按提示操作。
6、Launch images警告
Launch images are deprecated in iOS 13.0. Use a launch storyboard or XIB instead.
Assets里面移除Launch images,使用LaunchScreen;
Build Setting里搜索LaunchImages -> Asset Catalog Launch Image Set Name -> 移除LaunchImages
7、block的参数没有设置也没有写void报警告
This block declaration is not a prototype
Build Setting -> 搜索 Strict Prototypes 设置成NO。
block不设置参数的话,可以传任意个任意类型参数,设置成void就真的不能传参数了。有时候确实需要设计成传任意参数的,消除警告目前没有发现有什么不妥的地方,旧项目999+的错误,直接不提示好了。
8、block里面调用参数没有用self指针报警告
Block implicitly retains ‘self’; explicitly mention ‘self’ to indicate this is intended behavior
Build Setting -> 搜索 Implicit retain of 'self' within blocks 设置成NO。
Block里面避免循环引用,最好用weakself调用参数,写代码时养成习惯,顺手写上肯定不会出错。旧项目警告太多,运行稳定,就直接消除警告吧。
参考:xcode编译后警告的解决方法
9、误用逗号标点符号
possible misuse of comma operator here [-Wcomma]
free(coordinates), coordinates = NULL;
改掉。
10、 传参类型问题
Incompatible pointer types sending ‘NSArray *’ to parameter of type ‘NSMutableArray * _Nonnull’
改掉,方法里传NSArray就好了,因为NSMutableArray继承自NSArray,方法里面需要用可变对象的话,mutableCopy下。
11、使用YYCache缓存对象,实现了NSCoding的协议方法,但是没有在@interface 后面写报警告
Sending ‘xxx *’ to parameter of incompatible type ‘id _Nullable’
加上。
12、没有实现delegate里的方法
Class ‘xxxViewController’ does not conform to protocol ‘xxxDelegate’
实现对应方法,或者不需要实现的话在delegate非必须实现的方法上面添加@optional。
13、没有在interface后面声明UIGestureRecognizerDelegate协议
Assigning to ‘id _Nullable’ from incompatible type ‘xxxViewController *const __strong’
加上。
14、实现弃用的方法
Implementing deprecated method
看方法的适用范围,和自己项目支持的最低版本,决定删除还是区分版本处理。
15、performSelector调用警告
performSelector may cause a leak because its selector is unknown
看代码,Selector是个参数,编译器无法确定这个方法存在,所以报警告
[_delegate performSelector:_shareClick withObject:[NSNumber numberWithInteger:button.tag - 70]];
暂时消除警告,当然要自己确定这个方法存在,否则,自己试一下吧。
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[_delegate performSelector:_shareClick withObject:[NSNumber numberWithInteger:button.tag - 70]];
#pragma clang diagnostic pop
参考:爆栈热门 iOS 问题
16、#import结尾加了分号
Extra tokens at end of #import directive
这个。。。删了分号,不知道怎么会加分号,还不止一个类,这是某位仁兄要留下自己的标记吗。还是我无知,有什么不知道的高级含义。
17、注释里的警告
Documentation Issue Group
注释里有个<a> 报警告
HTML tag ‘a’ requires an end tag
使用@param options说明方法里的参数但是方法里没有这个参数报警告
Parameter ‘options’ not found in the function declaration
这个字段后面没有说明内容报警告
Empty paragraph passed to ‘@param’ command
在 Build Settings 搜索 Other Warning Flags 填入 -Wno-documentation。
警告类型为-Wdocumentation,W后面加上no-,表示不显示这种类型警告。
我们自己在写代码写注释时最好写清楚各个字段含义,修改时注释内容一并改掉
18、字符串类型转换警告
Format String Issue Group
代码中int型的值转字符串使用了@"%zd", i,zd我也是第一次见到,参考这篇文章吧
printf中的format格式 %zd
int型直接用%d就好了。
给一个参数传了空值报警告
Null passed to a callee that requires a non-null argument
@property (nonatomic, strong) NSDictionary * dicData;
self.dicData = nil;
加个可为空的标识可消除警告。
@property (nonatomic, strong) NSDictionary *_Nullable dicData;
iOS 警告消除(记录贴)相关推荐
- IOS本地日志记录解决方案
IOS本地日志记录解决方案 参考文章: (1)IOS本地日志记录解决方案 (2)https://www.cnblogs.com/xgao/p/6553334.html 备忘一下.
- iOS 审核被拒记录 Guideline 2.5.1 HealthKit; 2.5.4 UIBackgroundModes audio; 1.5 Developer Information
iOS 审核被拒记录 2.5.1 解决方案一(当前项目不需要HealthKit框架,将HealthKit相关内容和权限移除) 解决方案二(当前项目需要HealthKit框架) iOS 审核被拒记录 2 ...
- iOS:消除项目中警告
引言: 在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能执行之类的警告. 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告!! 首先学会基本的语句: ...
- iOS OC消除黄色警告⚠️ (不断的更新中...)
开发一个项目时,难免会产生很多警告,一些是第三方或是老代码不再被支持造成的,但并不影响使用,这些警告其实可以直接隐藏掉!还有一些警告可能是系统方法弃用.不兼容指针类型.未使用变量.未使用default ...
- ios警告与提示对话框
进行iOS开发过程中,不可避免的使用到各种提醒,来提醒用户当前操作,或是为了警告,或是为了数据缓冲. 本文介绍了使用 UIAlertController和UIAlertAction两个类,完成三种状态 ...
- cache failed module status_Flutter混编之路——iOS踩坑记录
一.运行Xcode编译或者flutter run/build 过程中报错:"x86_64" is not an allowed value for option "ios ...
- java 去除警告_Java——警告消除
@SuppressWarnings("unchecked")解释 解释一: 屏蔽某些编译时的警告信息 在强制类型转换的时候编译器会给出警告 加上 程序代码 @SuppressWar ...
- 一次ios转安卓记录(ios15 --> 魅族18s)
最近因为被iphone的通话记录与短信机制所局限, 于是打算换安卓. 在京东淘宝逛了很久,终于在京东下单了魅族18s. 主要记录一下迁移通话记录/联系人/短信的历程. 推荐使用官方软件,最省心,地址 ...
- IOS开发学习记录第3天之C语言学习
(一).学习IOS开发,我们就要刨根问底,如果学习,从哪学习,首先iOS是由苹果公司开发的移动操作系统[1] .苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPh ...
最新文章
- c语言存储多个数据,C语言中如何求数组真实存有数据的元素个数
- SQL Server2016 原生支持JSON
- android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码
- 解决网页不能复制粘贴的问题
- 被卡性能的时候要care数据类型(洛谷P5594TLE+RE的经历,Java语言描述)
- 最好的网页浏览器_如何实现整个网页的完整截图
- JMP软件与康涅狄格大学商学院
- 群联PS2251-07主控(Kingston64G)量产CD-ROM+移动磁盘模式过程记录
- 多模模块接单模光纤跳线/单模模块接多模光纤跳线
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
- 使用session验证输入的验证码是否正确
- UniAPP离线车牌实时扫描识别
- 小程序如何自定义组件
- win10在命令行下运行python程序
- 【转】解决win10系统每次重启桌面图标排列混乱的问题!亲测有效!!
- 面试了15位来自985/211高校的2020届研究生之后的思考
- WMS系统(一)成品出库
- Android 友盟推送收不到
- 初识C语言:多组输入的用法
- 没有区块链,就没有元宇宙
热门文章
- 设计师如何配色?(附超好用的配色网站)
- 【kafka专栏】安全认证之SASL_PLAINTEXT用户名密码方式
- html数组删除指定元素,js怎么删除数组中指定元素?
- 海龟python编程猫_海龟编辑器官方下载|编程猫海龟编辑器 V1.3.5 最新免费版 下载_当下软件园_软件下载...
- 土地供应方式划拨与出让的区别
- Linux locate模糊查询,linux命令: 两个查找工具 locate,find(示例代码)
- 腾讯云网站备案咨询:主体信息相关问题解答
- jvm垃圾回收算法和垃圾回收器
- 拿走不谢,孕妈想知道的都在这里了,关于分娩前见红
- 内部员工说说北塔软件怎么样