Swift:Deep in Safety

前言

我們知道Swift語言是按照安全的目標去設計的,那么這些設計具體體現在那些方面的?

安全設計的體現

Swfit是強類型語言

當你給函數賦一個類型不匹配的值的時候,編譯器會報錯
當你給變量賦一個類型不匹配的值的時候,編譯器會報錯
當你用操作符號操作類型不匹配的操作的時候,編譯器也會報錯
.....
實質就是:Swift是強類型語言,不允許給一個量賦類型不匹配的值

變量在使用前,必須初始化

訪問一個未經初始化的對象的行為是未知的。即使是常量,聲明的時候可以不初始化,但真正的get之前一定要初始化,并且只能設置一次值

更加安全的nil處理(Optional的杰作)

明確統一的處理,nil,NSNotfound,xxxMax等情況,并且在處理Optional值的時候編譯器強制要求你考慮Optional為nil的情況,再也不用擔心漏掉處理nil而導致服務器宕機或者客戶端的Crash了。所以有了Optional,let,value type...這些設計的保障,蠻期待Swift在服務器端編程的表現

程序員應該避免這些非安全的做法

Swift的Implicitly unwrapping optionals(隱式解包)和強制解包

var y:int!=5;y=nil;y.....crash

as! 類型轉換

父類存儲了子類的實例,將這個實例轉換為子類是經常要處理的情況,但是你能非常明確的知道,到底是哪一個子類么?所有類型轉換有兩個步驟要處理,確定實例類型,進行類型轉變。
Swift中類型轉換有兩種方式,safe ,unsafe
unsafe:不檢查實例類型,直接轉換解包
<pre>
let imageView = view as! UIImageView
</pre>
safe:
<pre>
if let view = view as? UIImageView { view.image = UIImage(named: "image")
}
</pre>

盡量使用非逃逸閉包

關于逃逸閉包和非逃逸閉包,以及一些處理的細節,參考:http://swift.gg/2016/11/15/optional-non-escaping-closures/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,874評論 1 10
  • 1、隨機數 不需要隨機數種子 arc4random()%N + begin:產生begin~begin+N的隨機數...
    我是小胡胡123閱讀 4,213評論 0 2
  • 一直沒有時間好好看一下swift,最近復習了一遍語法,這里記錄swift學習過程中遇到的一些問題和要點,和Obje...
    bomo閱讀 2,394評論 0 25
  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,372評論 1 27
  • 基礎部分(The Basics) 當推斷浮點數的類型時,Swift 總是會選擇Double而不是Float。 結合...
    gamper閱讀 1,332評論 0 7