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

  在入职三周后,终于赶齐了接手项目落下两个月的项目,有了一些自己的空闲时间对项目进行整理。主要整理包括类目的整合,从原来一个系统文件夹下几百个文件整改为以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 [email protected]

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

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

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

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

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

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

  解决方案:Update Frames就好。

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

时间: 2024-08-28 02:43:10

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

[转载]常见slave 延迟原因以及解决方法

一  序言在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: 点击(此处)折叠或打开 check_ins_slave_lag (err_cnt:1)critical-slavelag on ins:3306=39438 相信slave 延迟是MySQL dba 遇到的一个老生长谈的问题了.先来分析一下slave延迟带来的风险  1. 异常情况下,主从HA无法切换.HA 软件需要检查数据的一致性,延迟时,主备不一致.   2. 备库复制hang会导致备份失败(flush

coreseek常见错误原因及解决方法

coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用 本文为大家整理了coreseek/sphinx中文检索引擎的常见问题和解决方法,感兴趣的同学参考下. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协

Tomcat(8005,8080,8009)端口占用问题常见原因及解决方法

Tomcat(8005,8080,8009)端口占用问题常见原因及解决方法 在企业版Eclipse中,在已经启动了Tomcat服务器后,准备运行页面或Servlet时,有时会出现这样的关于Tomcat服务器端口占用的问题: “Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The server may already be running in ano

“服务器正忙,请稍后再试”常见原因及解决方法?

在网站运维过程中,常会遇到访客反映“服务器正忙,请稍后再试”错误提示,实际上不论是web服务器,游戏服务器,邮件服务器,又或者是软件服务器等,都会遇到诸如“服务器正忙,请稍后再试”类的问题.  游戏服务器正忙  这里就详细列举“服务器正忙,请稍后再试”错误现象常见的原因及相应的解决方法: 1.本地网络配置问题: 本地网络配置问题,包括本地dns服务器配置,浏览器配置等,如果配置不当,都常会出现“服务器正忙,请稍后再试”的错误提示. 解决方法是:根据访问服务器的情况,正确配置本地dns及浏览器相关

Nginx常见错误与问题之解决方法技术指南

  Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or

Hyper-V虚拟机启动时报&ldquo;账户没有足够的权限打开VHD文件&rdquo;原因及解决方法

前段时间,准备做一套Exchange Server 2010仿真环境,用于后期企业内各项变更及平台上线时测试工作,由于需要准备的服务器较多,一台一台装虚机,感谢非常费时间,所以想到,做一个模版来快速完成虚拟机部署工作,大概的过程我想大家也有做过,就是装一台Hyper-V虚机,然后把VHD硬盘文件拷贝出来,分别替换所有建好没有系统的虚拟机硬盘,看似简单,但是在实际操作时发现,模版硬盘没有被识别?各种报错,如下图所示: 当看到上图所示这些报错时,很不理解,已经将这台机器的VHD文件指向了新拷入的模版

C语言中常见的内存错误与解决方法

常见的错误 关于内存的一些知识已在内存分配中提及,现记录与分享常见的内存错误与对策. 类型 1:内存未分配成功,却使用了它. 方   法:在使用之前检查指针是否为NULL. 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查. 2)当使用malloc或new来申请内存时,应该用if(p != NULL)进行防错检查. 类型 2:引用了尚未初始化的指针 原   因:内存的缺省初始值究竟是什么并没有统一的标准,在使用之前都进行初始化. 1)没有初始化的观念. 2

数据库连接失败的原因及解决方法

各种业务系统在使用过程中都会遇到一些问题,因数据库连接失败,不能登录管理软件就是其中之一,这个很令人头疼而且常见的问题 一般的业务系统均采用的是SQL数据库,我们这里总结了SQL数据库连接失败的原因和解决方法: 原因一:登录账号.密码.服务器名称.数据库名称登录错误导致不能连接,这个比较常见,仔细检查好所填信息是否正确,填写正确一般就可以解决. 解决方法:当正在使用的软件出现数据库不能连接时,一般就是服务器名出现问题,更改服务器名称一般可以解决问题.数据库如果是安装在本机,服务器名可以用".&q

电脑蓝屏的原因及解决方法

几乎所有使用电脑的朋友都遇到过电脑蓝屏的现象,电脑蓝屏是一个非常普遍的现象,即使是比尔.盖茨在介绍Windows 98 功能的发布会这么重要的场合仍未能避免蓝屏现象,之所以电脑蓝屏现象很常见,是因为电脑蓝屏的发生有着多种原因,硬件出现问题,硬件之间不兼容,软件之间不兼容都可能造成蓝屏的问题!今天就为大家介绍下电脑蓝屏的原因及解决方法,希望对大家解决电脑蓝屏现象有所帮助! 电脑蓝屏原因 1 软件兼容性问题引起电脑蓝屏刚安装的系统,若驱动与硬件不兼容可能会导致蓝屏现象,建议安装硬件赠送光盘中的驱动(