swift語法注意點(swift3.0)

swift語法中和其它語言(OC,Java,JS)相同的地方就不多贅述,只記錄一下需要注意的地方

1.基本語法部分

  • 1.1 常量變量,類型自動推導(dǎo),開發(fā)中盡量使用常量

swift沒有隱式轉(zhuǎn)換: swift對數(shù)據(jù)類型要求異常嚴(yán)格,任何情況都不會作隱式轉(zhuǎn)換,如果要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,必須顯式轉(zhuǎn)換(即強轉(zhuǎn))

  • 1.2 swift的nil和OC中的nil不一樣:
  • 在OC中,nil是一個指向不存在對象的指針.在OC中,基本數(shù)據(jù)類型和結(jié)構(gòu)體是不能被設(shè)置為nil的.
  • 在Swift中,nil不是指針,它是一個不確定的值.用來表示值缺失.任意類型的可選狀態(tài)的值缺失都可以賦值nil,并不只是對象類型可以賦值。
  • 1.3 可選值 optional
  • 定義 變量或者常量 時,在其數(shù)據(jù)類型后加一個 ? 號,表示該變量或者常量是可選的(optional),變量可選項的默認(rèn)值是 nil ,常量可選項沒有默認(rèn)值,主要用于在構(gòu)造函數(shù)中給常量設(shè)置初始值
  • 在 常量/變量 后加上 ! 號,表示強制解包(unwrap).如果常量或者變量是optional,則不能參與運算,只有將這個常量或變量強制解包后,才能參與運算,注意:必須確保常量或變量強制解包后的值不是 nil ,否則會在運行時報錯 "fatal error: unexpectedly found nil while unwrapping an Optional value"
  • 使用 ?? 運算符可以判斷 變量/常量 的值是否是nil ,如果為nil,則用 ?? 后面的值代替原值
  • 1.4 條件控制

  • 1.5 循環(huán)

  • 1.6 字符串

  • 1.7集合

2. 函數(shù)部分

  • 2.1 函數(shù)
    函數(shù)定義格式
 func 函數(shù)名 (形參列表) -> 返回值類型  {
    // 代碼實現(xiàn)
}
  • 2.2 閉包
    閉包定義格式
閉包 = { (形參) -> 返回值類型 in
   // 代碼實現(xiàn)
}
  • 2.3 尾隨閉包(Trailing Closures)

函數(shù)內(nèi)聯(lián)閉包的形式

函數(shù)名 (  參數(shù)1, 參數(shù)2, 參數(shù)3 ,{  (閉包形參) -> 返回值類型 in
  // 閉包的代碼實現(xiàn)
} )

尾隨閉包是一個書寫在函數(shù)括號之后的閉包表達(dá)式,函數(shù)支持將其作為最后一個參數(shù)調(diào)用, 尾隨閉包是 函數(shù)內(nèi)聯(lián)閉包的形式的簡寫

函數(shù)名 (函數(shù)形參) {  (閉包形參) -> 返回值類型 in
  // 代碼實現(xiàn)
}

如果函數(shù)僅有一個參數(shù) 且 這個參數(shù)是閉包,則函數(shù)的() 可以省略

函數(shù)名  {  (閉包形參) -> 返回值類型 in
  // 代碼實現(xiàn)
}

如果閉包沒有參數(shù) ,由于 閉包返回值支持 類型推導(dǎo),則閉包的"(閉包形參) -> 返回值類型 in" 可以被省略,上面尾隨閉包 可以簡化為這樣

函數(shù)名  {  
  // 閉包代碼實現(xiàn)
}
  • 2.4 <b>閉包內(nèi)存循環(huán)引用
    swift 解決循環(huán)引用的方式
    • 使用weak修飾變量, 打破強引用, 因為使用weak修飾的變量有一次變成nil的機會
    • 使用[weak self] 修飾閉包原理跟OC中__weak類似, 這樣在閉包中使用self, 就是弱引用
  • 使用[unowned self ] 修飾閉包, 跟__unsafe_unretained類似, 不安全

3.面相對象

  • 3.1 構(gòu)造函數(shù)
  • 3.2 重載構(gòu)造函數(shù)
  • 3.3 kvc構(gòu)造函數(shù)
  • 3.4 遍歷構(gòu)造函數(shù)
  • 3.5 懶加載
  • 3.6 只讀屬性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容