關於swift的guard使用一定要慎用

2022-07-28 05:03:11 字數 937 閱讀 5387

很久沒有更新部落格,因為換了工作環境,適應了一段時間,哎,年齡大了就是這樣,適應一件事要花很多時間,不過不管怎麼說,過程雖然磕磕絆絆,但總的來說還是美好的。額,閒話不多說,來看看今天要嘮的話題是什麼。

進入新的工作環境後,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!!!!

swift 關鍵字guard 計算屬性

1 計算屬性,隨意寫 var isempty bool 華麗麗的分割線 2 guard用了之後可以直接不用打括號,直接往下執行 1 2 1.guard percentremaining 0else 2.print mmmm percentremaining left 華麗麗的分割線 3 repeat...

swift3 0回首guard的奇妙之處

看原始碼發現了這個關鍵字 guard 一直沒有研究透這個用法,就知道這只是乙個判斷條件,然後else是條件不滿足,下面的是條件都是滿足之後執行的。查了官方解釋 與if語句相同的是,guard也是基於乙個表示式的布林值去判斷一段 是否該被執行。與if語句不同的是,guard只有在條件不滿足的時候才會執...

Swift 2 3 這些情況下guard要慎用

在 swift 2.0 中,帶來了令人激動的的 guard 語句。但是還是有人不太理解 guard 的意義,特別是同 swift 2.0 之前簡單的 if 語句相比較來看。我們知道,所有的 guard 使用場景都可以用 if 來替代,那麼為什麼還要增加 guard 特性呢?其最最主要的原因還是gua...