![7f6074ae213edd8c953831fb0b0c6766.png](https://i-blog.csdnimg.cn/blog_migrate/04386187450987313980c9714776668e.jpeg)
欢迎继续我们的学习。
一起来“抓虫”-处理错误提示信息
当我们点击Xcode工具栏上的右三角运行按钮时,有可能会看到Xcode给出一个’Build Failed’的错误提示信息。
Xcode的编译器是非常敏感的,即便是最小的错误也可能让Xcode感到迷惑。即便是非常熟练的编程老手,想要第一时间迅速找到错误的原因也不是那么简单的事情。
有时候可能只是源代码中的一个小小的拼写错误,都可能导致整个项目的崩溃。
在iOS开发的过程中,一个常见的代码错误就是大小写。Swift语言是一门大小写敏感的编程语言,也就是说在它的眼里,Alert和alert是不同的两个事物。如果出现这样的书写错误,Xcode就会提示,<something> undeclared,或是’Use of unresolved identifier’。当Xcode提示’Parse Issue’或’Expected <something>’时,很可能就是你忘了添加花括号}或是大括号)。
实际上,前后括号没有一一对应也是编写代码中的一个常见错误。
小技巧:
在Xcode中,有很多种方法可以确保括号是否对齐。当你把光标移动到右括号时,Xcode会自动高亮对应的左括号。
此外,当按下键盘上的command键时,将鼠标的光标移动到括号中的某一行代码时,Xcode会自动高亮括号之间的整个代码段。
![5f38ddde4cde40c2c134649d2b48d887.png](https://i-blog.csdnimg.cn/blog_migrate/777353dea3b3fe3ae28c8e52ae02dc8d.png)
在编写代码的时候,这些看起来细微的细节同样很重要。
一处拼写错误可能就会让全局崩溃,其实这一点不能完全怪开发者,只能说现在的编译器真的不够“智能”,不能完全“理解”开发者的偷懒意图,也不能容忍一些哪怕最初级的无心之过。在这方面,跟最早期的编程语言相比并没有什么明显的进步。
虽然AI现在越来越流行,但是很多地方还是需要人工来介入的,离所谓的“通用智能”还差了几亿光年的距离。
好了,不吐槽了。
幸运的是,类似这种拼写的小错误,虽然不能忽略或完全自动修复,但当代的主流编译器已经可以很轻松的发现并指出错误。
比如:
![bd00eb5e9c24b2dd61b93e67f2ef695f.png](https://i-blog.csdnimg.cn/blog_migrate/210b168a4a4fe3d237df1f658df22dfc.png)
当Xcode检测到某处代码错误时,会在不同的地方使用红色错误提示符号。
对国内的开发者来说,更常犯的错误可能不是遗漏这些符号,而是不小心用中文输入法中的全角符号替代了英文的半角符号,这一点切记。
点击Diagnostics按钮,就可以看到xcode的耐心解释。
![dc123e9436896364af2da94b3cb0dabf.png](https://i-blog.csdnimg.cn/blog_migrate/81138e36bde4005590d50221873b6c9a.png)
点击代码编辑器上的红色提示按钮,会看到类似下面的小提示框,
![e4046b601c2488f536e8eb4991355d19.png](https://i-blog.csdnimg.cn/blog_migrate/6e9032864a62abed4196cfc8365750b7.png)
在这里,点击Fix按钮,Xcode会自动帮你解决这处错误。
接着你会发现错误消失了,整个世界清静了。
所以,刚才我说的有点过分,当代的编译器相比几十年前多少还是有点进步的。虽然做不到对错误视而不见,或者完全自动修复,但至少可以比较“智能”的发现问题所在,甚至可以在提示的前提下半自动的修复错误。
关于错误和警告
在Xcode中,对于代码中可能存在的问题,会使用红色的错误和黄色的警告来区别。对于程序这个生命体来说,错误是致命的。当我们看到红色的错误提示时,意味着如果不解决它,整个应用都无法正常运行。
警告信息更多是一种提示,Xcode使用这种方式告诉你,“虽然存在一些隐患,但你还是可以继续。”
简单来说,红色的错误提示就是红牌警告,黄色警告则是一种友善的提醒。
![090e3e7130304b3d6447e068e8bd8b87.png](https://i-blog.csdnimg.cn/blog_migrate/019e55f1c1a98cfc78796039a4816755.jpeg)
![3e16aa51084b3cd4d445c09c2927961e.png](https://i-blog.csdnimg.cn/blog_migrate/e8df5ed06d6d90ca1d759f496e8e9c77.png)
话虽这么说,在能力允许的范围内,最好还是把警告信息当做错误来处理。
理想的情况下,我们希望整个应用可以实现零错误零警告。
不过,最后的最后,希望告诉大家,即便整个项目代码里面零错误零警告,也可能在实际运行的时候出现一些未知错误。
总之,一旦迈入编程门,就会消耗猿生至少50%以上的时间用来解决各种bug,处理各种不尽人意的问题。可能是你的前任留下的,也可能是你自制的~
好了,本课的学习到这里就结束了,我们下一课再见~
![b56d9416162ecf7e270698c2eebb8539.png](https://i-blog.csdnimg.cn/blog_migrate/112d8db6f9a0381ef18a450c176f5479.jpeg)
![ec4acdbecae634cf8962d1d5e50743e9.png](https://i-blog.csdnimg.cn/blog_migrate/e70c7b818745a02c9c25de5c2d4fdaa2.jpeg)
相关示例代码会随后传到github:
eseedo/iOSCoursegithub.com![0d7bed70e85ab53cb89db525ed4f2869.png](https://i-blog.csdnimg.cn/blog_migrate/9c892c5ff0dd170350209451b33c1d80.jpeg)