在入职三周后,终于赶齐了接手项目落下两个月的项目,有了一些自己的空闲时间对项目进行整理。主要整理包括类目的整合,从原来一个系统文件夹下几百个文件整改为以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了。希望大家在写代码的时候遵循格式,不要无视警告,影响整个程序代码的效率与整洁。

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

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

    一  序言在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: 点击(此处)折叠或打开 check_ins_slave_lag (err_cnt:1)critical-slav ...

  2. 常见slave 延迟原因以及解决方法

    一  序言在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: 点击(此处)折叠或打开 check_ins_slave_lag (err_cnt:1)critical-slav ...

  3. Mysql并发时经典常见的死锁原因及解决方法

    1.    mysql都有什么锁 MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁 ...

  4. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法

    MySQL都有什么锁? MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度 ...

  5. Apache -- XAMPP Apache 无法启动原因及解决方法

    XAMPP Apache 无法启动原因1(缺少VC运行库): 这个就是我遇到的问题原因,下载安装的XAMPP版本是xampp-win32-1.7.7-VC9,而现有的Windows XP系统又没有安装 ...

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

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

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

      Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...

  8. .NET 3.5 安装错误的四个原因及解决方法

    .net framework 3.5 安装错误的四个常见原因及解决方法,飓风软件站整理,转载请注明. 1.清除所有版本 .NET Framework  安装错误后在系统中遗留的文件: 如果您以往安装过 ...

  9. DedeTag Engine Create File False提示的种种原因及解决方法

    DedeTag Engine Create File False提示的种种原因及解决方法 第一种情况:站点.文件夹权限不足造成无法建立文件 这种情况的出现,一方面可能是Apache设置的读写权限较严格 ...

随机推荐

  1. jsp/servlet中的编码问题

    首先声明以下只是我个人的看法,有部分观点与网上人云亦云的观点不一样,不过凡事必恭亲,我还是相信自己测试的结果 推荐一个很好地URL编码详解http://www.ruanyifeng.com/blog/ ...

  2. 关于Java集合

    之前关于java集合认识,虽然理解,但是总是忘记关键点,今明两天写一篇关于集合的随笔

  3. 【卷二】网络三—UDP服务器与客户端

    这是另一个类型的服务器/客户端,无连接的 UDP: (User Datagram Protocol) 用户数据报协议 参考: P58~P60 UDP 时间戳服务器 [时间戳 就是ctime()显示的内 ...

  4. i++与++i区别使用

    中心:使用变量自增或者处减使用尽量使用++i与--i,而不要去使用i++与i-- ++i与--i可以做左值也可以做右值,而i++与i--只能做右值. 对于基础类型i++与++i结果相同,但是i++肯定 ...

  5. C#用 excel 作为模板打印

    //打印操作,套打.打印.预览        enum PrintFlag        {            /// <summary>            /// 套打,只打印没 ...

  6. LeetCode 328. Odd Even Linked List C#

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  7. iOS Plugins

    iOS Plugins This section provides details for how to implement native plugin code on the iOS platfor ...

  8. fpSpread 设置Border 样式

    // Create a new bevel border. //FarPoint.Win.BevelBorder bevelbrdr = new FarPoint.Win.BevelBorder(Fa ...

  9. Nginx将项目配置在子目录

    问题:一个完整的项目需要整合在另外一个项目中,作为一个子模块存在 有两个项目prject1 根目录/www/project1与project2 /www/project2,现在是想将probject1 ...

  10. android中RelativeLayout无法填充ScrollView布局的问题

    ScrollView是解决布局过长的情况下使用,一遍其下面会有个顶部布局,我项目里面是RelativeLayout,但是RelativeLayout无论设置 android:layout_height ...