关于swift的guard使用一定要慎用

  很久没有更新博客,因为换了工作环境,适应了一段时间,哎,年龄大了就是这样,适应一件事要花很多时间,不过不管怎么说,过程虽然磕磕绊绊,但总的来说还是美好的。额,闲话不多说,来看看今天要唠的话题是什么。

  进入新的工作环境后,iOS的编写已经从oc过渡到swift,因为常年使用oc,所以老实说,在使用swift的过程中遇到了许许多多奇葩的问题,今天要说的就是问题之一,尽管看起来很弱智的问题,但是我确实做到了。

  swift新推出的guard关键字,直译为保护,帮助保护不安全的解包,防止强制解包导致程序crash,刚开始使用的时候,真的是非常爽,比如这个样子。

  一旦提取的object不符合条件要求,这个方法就会直接return不会向下进行,如果符合要求,程序就会继续向下运行,而且,敲黑板了,data的使用区域不受guard括号的范围限制,这是与if判断不同的,上代码。

  

  使用if判断保护的变量,使用返回仅限于if的括号范围内,这就导致使用这个变量的代码,只能写在if括号范围之内,十分不方便,也不够优美。对,不够优美,但这并不表示可以随便使用guard这个关键字,因为,因为....上代码。

  

  在for,while,do-while等循环语句中使用guard,一旦变量不存在,就会直接跳出函数方法,导致剩下循环没办法进行,当程序使用数组的时候,容易造成数组越界,从而发生crash,这个问题很低级,但是我确实脑抽的发生了,造成很严重的后果,所以,写这边博客,一是记录一下自己的错误,二是提醒其他iOS开发者,尽量避免与我同样的错误。

  最后祝大家永无bug!!!!

posted @ 2018-11-16 10:16  徐栋  阅读(434)  评论(0编辑  收藏  举报