一些常见warning的原因和解决方法

2023-11-14

  在入职三周后,终于赶齐了接手项目落下两个月的项目,有了一些自己的空闲时间对项目进行整理。主要整理包括类目的整合,从原来一个系统文件夹下几百个文件整改为以MVC设计思想为原则的分文件夹整理类目,井然有序了很多,也不需要再用查找关键字来寻找想要找的类了,中间因为类目文件位置的修改而出现了很多问题。其次还包括一些代码的整合,包括一些多个类中都需要使用的代码,我们可以创建一个工具类来封装调用,或者使用一个根类来集成代码。

  在做完了以上工作后,我又把关注重点放在了150多个warning之上。作为一个强迫症,是无法容忍这么多warning存在在我的程序里面的。所以,我走上了漫长的修改警告warning之路。

 

1. Initialization of immutable value 'XXX' was never used; consider replacing with assignment to '_' or removing it.

  直译:不可变量'XXX'的初始值并没有用到;考虑下用'_'替代或移除它。

  分析:直译够简单明了了。我们可能在之前创建了一个变量/常量,赋予了它值并准备使用;然而我们由于种种原因并没有用到这个值。出于对内存优化的考虑,系统提示我们使用或干掉它。

  解决方法:1.直接删掉这个值(或者你可以注释掉以防用到);2.确认我们将来可能会用到这个值而暂时用不到,那就点一下黄色"warning",系统会帮你替换为"_"。

 

2. 'init(start:end:)' is deprecated: it will be removed in Swift 3.  Use the '..<' operator.

  直译:'XXX'已经被废弃了:它将在Swift 3时被移除。使用'XXX'方法。

  分析:当我们看到"is deprecated"的时候,代表我们当前使用的属性或方法被废弃了。警告中一般带有建议替换的方法或属性名称。替换就可以了。

  解决方法:点击当前方法进入源文件,找到新的方法,分析新方法的使用方式后替换废弃的方法。

 

3.  Variable 'XXX' was never mutated; consider changing to 'let' constant

  直译:变量'XXX'的值从未改变;考虑改变为'let'修饰的常量。

  分析:这是Swift中出现的错误。我们在声明一个值得时候,要同时声明这个值为"var"变量或"let"常量。若声明为变量而实际值未改变过时,会出现上述警告让你改为"let";若声明为变量而值改变过时,会出现红色报错提示你改为"var"。

  解决方法:点击黄色警告,在出现系统提示后回车即可替换。

 

4. Use '#selector' instead of explicitly constructing a 'Selector'

  直译:使用'#selector'代替明确的构造一个'Selector'结构体。

  分析:这个也是Swift特有的问题,不过我想说的'instead of'不是。一般这种情况的产生是因为语言版本的更新而造成了一部分语法的不同。使用'instead of'之前的方式即可。

  解决方法:若可以,则直接点击警告然后回车替换。若不可以,则看警告信息知道要替换的语法后,自己替换。

 

5. The image set name "XXX" is used by multiple image sets.

  直译:名称为"XXX"的图片组重复了。

  分析:这个警告的意思是,你引入了两个或多个相同名称的图片组。一般发生在我们获得新的切图并放入工程之后。

  解决方法:删除重名的一组图片,或将其中一组图片修改名字。

 

6. The image set "XXX" has an unassigned child.

  直译:名为"XXX"图片的图片组有一个不可同化的子图片。

  分析:我们都知道iOS因为屏幕分辨率的问题,切图一般有三套,我们通过在一组图片中的每张图片后添加后缀@2x/@3x来区分每张图片不同分辨率对应的不同屏幕。但如果我们并没有这样命名,就会出现上述问题。

  解决方法:将未设置分辨率比例的图片设置一下,或者删掉这个图片。

 

7. The image set "XXX" references a file "XXX.JPG", but that file does not have a valid extension.

  直译:图片组"XXX"涉及到了文件"XXX.JPG",但是这个文件没有一个正当的扩展名。

  分析:iOS支持的图片类型主要有"JPG, JPEG, GIF, PNG",这么看貌似也有"JPG"格式。但是iOS支持的扩展名都是小写。

  解决方法:将".JPG"改为".jpg"即可。

  

8. AppIcon.appiconset/logo_83.5.png is 84x84 but should be 167x167.

  直译:App的标示图片分辨率是84x84但是应该是167x167。

  解决方法:放置合适分辨率的图片。

 

9. Warning: Multiple build commands for output file fanhui@2x.png

  直译:当我们导出文件时出现了多样的控制。

  分析:这个错误发生在我们直接将文件加入工程,而不是放在Assets.xcassets中的时候可能出现(对比上述第5个问题),原因是我们重复放入了两个相同名称的图片。

  解决方法:删掉一个图片或者将其中一个图片改名。

 

10. Main.storyboard Frame for "XXX" will be different at run time.

  直译:在"Main.storyboard"上的"XXX"控件的框架在运行时会与现在不一样。

  分析:这是因为我们在设置完成控件的约束后没有Update Frames。

  解决方案:Update Frames就好。

 

11. Unsupported Configuration: “View Controller“ is unreachable because it has no entry points, and no identifier for runtime access via -[UIStoryboard instantiateViewControllerWithIdentifier:].

  直译:不支持的设置:"View Controller"是不能被取到的,因为它没有程序入口指针,也没有标识符以供方法[UIStoryboard instantiateViewControllerWithIdentifier:]在运行时获取。

  分析:相当于你创了一个UIViewController缺什么都没设置。

  解决方案:干掉,或者起个标识符并使用。

 

  目前尚有一些warning没有解决,另外还有些第三方框架的警告没有修改。不过已经从150修改到27了。希望大家在写代码的时候遵循格式,不要无视警告,影响整个程序代码的效率与整洁。

 

12.Warning:

  程序一运行之后打印:objc[56768]: Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x1140fd998) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x113f1f880). One of the two will be used. Which one is undefined.

  原因很简单,你使用了 <AssetsLibrary/AssetsLibrary.h> ( iOS9.0之后废弃 ) 或者 <Photos/Photos.h> (iOS8.0之后可以使用)这两个程序之一,并且你的程序的最低版本配置在8.0之上;或者你使用了其他两个相同功能的苹果官方framework。它的意思就是两个类重名了,但是包含在两个framework里面。

  这个问题暂时无法避免,但是没有关系不影响运行。PLBuildVersion在这两个框架里都是一样的,不影响实际运行。

转载于:https://www.cnblogs.com/SoulKai/p/5865175.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一些常见warning的原因和解决方法 的相关文章

  • Golang 微框架 Gin 简介

    框架一直是敏捷开发中的利器 能让开发者很快的上手并做出应用 甚至有的时候 脱离了框架 一些开发者都不会写程序了 成长总不会一蹴而就 从写出程序获取成就感 再到精通框架 快速构造应用 当这些方面都得心应手的时候 可以尝试改造一些框架 或是自己
  • element-ui的table动态渲染表头

  • ruoyi管理系统+微信小程序登录解决

    原料 ruoyi管理系统项目模板 基于springboot 微信小程序项目 阿里云服务器 有域名 有ssl证书 阿里云服务器的ssl证书可以买一个仅限一年免费的那个证书 注意事项 1 微信小程序调用云服务器接口需要https csdn ne
  • Android:usb转232串口通信

    准备工作 首先得adb进入盒子root模式 将 dev ttys1这个文件改为777 使得所有用户可操作 adb root adb remount adb shell 进入设备的root模式 执行 chmod 777 dev ttys1 执
  • 项目 谷粒学院Day16-18

    Day 16 07 13 统计分析模块 后台 准备工作 创建统计表 创建service statistics模块 使用代码生成器生成代码 创建启动类 SpringBootApplication ComponentScan basePacka
  • 《Hadoop权威指南》书摘-HDFS概述

    转载请注明出处 独立博客 http wangnan tech 简书 http www jianshu com u 244399b1d776 知乎 https zhuanlan zhihu com c 121958856 设计 超大文件 已经
  • pthread_cond_timedwait

    pthread cond timedwait pthread cond signal
  • Keepalived的权值问题(priority与weight)

    在Keepalived集群中 其实并没有严格意义上的主 备节点 虽然可以在Keepalived配置文件中设置 state 选项为 MASTER 状态 但是这并不意味着此节点一直就是Master角色 控制节点角色的是Keepalived配置文
  • 【深度解析→博文总结】李宏毅机器学习2023作业02Classification(Framewise Phoneme Prediction)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 0 49798 Medium Baseline 0 66440 Stong Baseline 0 74944 Boss Baseline 0 830
  • oracle rac 性能影响参数 - MTU

    在项目中遇到了数据导入特别缓慢的问题 或者是建立索引特别慢 在优化数据库无果之后 主机方面找到了问题的原因 root rac1 netstat nai Kernel Interface table Iface MTU Met RX OK R
  • R2dbc连接操作mysql

    R2dbc操作mysql 依赖
  • 公网IP查询方法

    1 我们平时在家用的网络就是公网 直接在命令行运行ipconfig查询即可 2 如果是公司内或者学校内的局域网 要查询公网IP有以下方式 1 查自己本机IP 打开http ip cn 显示的IP就是本机IP 2 打开 http site i
  • Java 构建 HashCode 相同的字符串

    在查看 hashcode 源码的时候 想模拟红黑树的生成 发现不知如何构建 HashCode 相同的值 从源码看HashCode 的生成 jdk1 8 为例 都知道 Object 有一个通用的 hashcode 方法 但该方法被 nativ
  • RabbitMQ重试机制

    1 RabbitMQ重试机制的简介 RabbitMQ 不会为未确认的消息设置过期时间 它判断此消息是否需要重新投递给消费者的唯一依据是消费该消息连接是否已经断开 这个设置的原因是 RabbitMQ 允许消费者消费一条消息的时间可以很久很久
  • C++基本类型

    目录 目录 C 基本类型分类 整型 整型 short int long和long long 其他整型类型 CONST限定符 浮点数 sizeof 部分问题 总结 C 基本类型分类 整型 符号整型 signed char short int
  • Windows defender怎么才能彻底关闭?

    据不久前的一项测试表明 Windows系统自带的Windows defender软件在所有参与测试的杀毒安全软件中对win10的运行速度影响最大 而Win10系统的Windows defender会在工作时不停的扫描计算机程序 使CPU负荷
  • 输入一个整数n,请你输出斐波那契数列的第n项

    题目 大家都知道斐波那契数列 现在要求输入一个整数n 请你输出斐波那契数列的第n项 从0开始 第0项为0 n lt 39 分析 方法 1 可以用数组将每个斐波那契数列值存起来 int Fibonacci int n int a 40 0 a
  • 修改powershell默认启动位置

    一 在用户所在的文档目录中创建一个名为 WindowsPowerShell 的目录 例如 C Users silence Documents WindowsPowerShell 二 在WindowsPowerShell的目录下创建一个名为
  • ASML逆袭史:人、资金、技术,缺一不可

    前言 近年来 由于众所周知的原因 荷兰ASML 阿斯麦 公司的先进半导体制造设备 光刻机 进入普通大众视野 成为人们茶余饭后谈论的焦点话题之一 1月底 美日荷三方谈判达成协议 可能进一步限制先进半导体设备出口 的消息 又一次将光刻机置于舆论
  • 关于定时情况下,大量数据进去SQL表中如何保存

    大量数据如何完成添加 一 多用于定时任务的情况 当大量数据进入时 没有保存完成 而新的一轮定时任务就已经重复进入的情况下 该如何进行处理呢 import com alibaba fastjson JSONObject import java

随机推荐

  • vue2中无法监听数组和对象的某些变化问题

    一 数组 1 不能监听的情况 1 直接通过下标赋值 arr i value 2 直接修改数组长度 arr length newLen 2 替代做法 1 修改值 1 2 3 Vue set arr index newvalue vm set
  • Proteus中ADC0808的使用注意事项

    之前在本科单片机课程设计中 使用Protues中的ADC0808做温度采集 数据协议完全按照手册编写 但是无论是轮询还是中断读数 数据始终胡乱变化 没有任何规律 排查好久也没找到原因 一度怀疑是仿真软件的BUG 现在想想自己脑洞真是大 没办
  • DeeplabV3Plus源码分析

    DeeplabV3Plus源码分析 数据读取和预处理 网络前向传播 ASPP层 模型训练 数据读取和预处理 定义了预处理函数 进入到VOCSegmentation函数 读取数据和标签并进行预处理 网络前向传播 modeling py根据传递
  • 深入解析Java中的==和equals方法:如何正确比较对象

    目录 一 概述 二 操作符 三 equals方法 四 字符串的特殊性 五 如何覆盖equals方法 5 1 覆盖equals方法遵循的原则 5 2 覆盖equals方法的步骤 六 和equals区别 七 应用场景 总结 一 概述 在介绍 和
  • 【Netty4】netty ByteBuf(三)如何释放ByteBuf

    相关文章 netty ByteBuf 一 如何创建ByteBuf对象 netty ByteBuf 二 引用计数对象 reference counted objects netty ByteBuf 三 如何释放ByteBuf 概述 经过前面2
  • 【论文复现】—— 基于最小平方中值的点云平面拟合算法

    目录 一 算法原理 1 论文概述 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 论文概述 三维扫描获取待测对象点云时 不可避免地会出现噪声点和异常值 严重影响点云平面参数估计和平面拟合精度 采用随机抽样一致性 RANSAC 和
  • 【Qt connect传参方式及lambda函数传参方式详解】

    Qt connect传参方式及lambda函数传参方式详解 一 一般connect用法 1 无参用法 设槽函数 void buttonClicked 1 1 信号 槽均无参数 connect myButton SIGNAL clicked
  • codeblocks 安装 MinGW-w64 和 安装 wxWidgets

    1 安装 MinGW w64 参考链接 Code Blocks mingw64 编译64位程序配置方法 下载链接 https sourceforge net projects mingw w64 files Toolchains targe
  • 鸿蒙ide使用

    隔2个月时间 发现新东西增加不少 还记得第一次收集各种资料 看产业前景 现在可以下定决心 启动鸿蒙专题学习 ios架构师学习路上 更加的艰苦了 这就是这个行业 来链接 HarmonyOS应用开发 服务开发 开发 UI Java UI框架 J
  • 【人体姿态估计2】Real-time Multi-person 2d pose estimation using part affinity fields_2017

    文章目录 1 Introduction 2 Method 2 1 Simultaneous Detection and Association 2 2 Confidence Maps for part detection 2 3 Part
  • 五、命令模式

    五 命令模式 1 模式结构及结构图 模式结构 1 1 命令抽象类 Command 声明执行命令的接口 具有命令执行的抽象方法execute 1 2 具体命令类 concrete Command 实现命令接口 它具有接收者对象 并调用接收者对
  • 指针数组和数组指针的区别

    指针数组和数组指针的区别 指针数组 array of pointers 即用于存储指针的数组 也就是数组元素都是指针 数组指针 a pointer to an array 即指向数组的指针 还要注意的是他们用法的区别 下面举例说明 int
  • java. gc原理面试_一文带你深入JAVA GC(垃圾回收机制)面试讲解!!!

    1 什么是GC 大白话说就是垃圾回收机制 内存空间是有限的 你创建的每个对象和变量都会占据内存 gc做的就是对象清除将内存释放出来 这就是GC要做的事 2 需要GC的区域 说起垃圾回收的场所 了解过JVM Java Virtual Mach
  • 扩频技术详解

    扩频是什么 扩频是一种信息处理传输技术 扩频技术是利用同欲传输数据 信息 无关的码对被传输信号扩展频谱 使之占有远远超过被传送信息所必需的最小带宽 扩频技术原理 在发端输入的信息先经信息调制形成数字信号 然后由扩频码发生器产生的扩频码序列去
  • Mac 上无法使用netstat的-p参数

    解决方法 改为使用lsof命令 例 lsof i P grep i listen 问题解析 如果像linux一样使用netstat tunlp 会收到如下报错 netstat option requires an argument p Us
  • js实现字母序号自动递增

    在实现一个考试管理系统的时候 可能会遇到试题的选项不是固定的情况 需要灵活的增加选项 选项自动递增 A B C D F 通过Unicode编码的方式可以灵活实现 本案例是基于layui表格实现的 如果是其他形式 可以修改部分代码 首先获取到
  • urlopen error [Errno 10061] 解决(附python 获取状态码)

    urllib2 URLError
  • 短连接和保持连接有什么区别,举个具体的网站开发的例子说明两者之间的区别

    短连接和保持连接是指客户端和服务器之间的网络连接模式 短连接是指客户端请求服务器后 发送完请求并接收到服务器的响应后 就立即关闭与服务器的连接 在下一次请求时 需要重新建立连接 这种模式下 服务器不需要在后台一直保持与客户端的连接 可以更好
  • 电阻分压器的阻值大小

    原文连接 https electronics stackexchange com questions 28897 how to choose value of resistor in voltage divider 在选择电阻作为分压器时
  • 一些常见warning的原因和解决方法

    在入职三周后 终于赶齐了接手项目落下两个月的项目 有了一些自己的空闲时间对项目进行整理 主要整理包括类目的整合 从原来一个系统文件夹下几百个文件整改为以MVC设计思想为原则的分文件夹整理类目 井然有序了很多 也不需要再用查找关键字来寻找想要