Swift2 0 文件學習筆記

2021-07-05 04:46:08 字數 1745 閱讀 5955

最近把

《the swift programming language 中文版》粗略地看了一遍,並隨手留了點筆記,以備忘。

1、閉包,通過閉包對字串陣列進行排序,閉包的函式體部分由關鍵字in引入

names.sort( )

names.sort( )(型別推斷,推斷引數型別)

names.sort( )(隱式返回,推斷返回什麼型別)

names.sort( )   (引數名縮寫,引數順序呼叫)

names.sort(>)(運算子函式,swift自動推斷)

2、尾隨閉包的使用

let digitnames = [

0: "zero", 1: "one", 2: "two", 3: "three", 4: "four",

5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine"

]let numbers = [16, 58, 510]

let strings = numbers.map

return output

}println(strings)

輸出:[onesix, fiveeight, fiveonezero]

3、巢狀函式的捕獲值

//傳入int ,返回()->int

//被傳入的int被潛逃函式捕獲,並持有,不斷累加。

func makeincrementor(forincrement amount: int) -> () -> int

return incrementor

}override func viewdidload() {

super.viewdidload()

let dd = makeincrementor(forincrement: 7)

println(dd()) //7

println(dd()) //14

let ee = dd

println(ee()) //21

4、swift 中字串(string),陣列(array)和字典(dictionary)型別均以結構體的形式實現。這意味著string,array,dictionary型別資料被賦值給新的常量或變數,或者被傳入函式或方法中時,它們的值會發生拷貝行為(值傳遞方式)。

5、延遲儲存屬性(lazy)來避免複雜類中不必要的初始化。

6、可以通過把方法,屬性或下標指令碼標記為final來防止它們被重寫

7、迴圈引用的解決方式

person和apartment的例子展示了兩個屬性的值都允許為nil,並會潛在的產生迴圈強引用。這種場景最適合用弱引用來解決。

customer和creditcard的例子展示了乙個屬性的值允許為nil,而另乙個屬性的值不允許為nil,這也可能會產生迴圈強引用。這種場景最適合通過無主引用來解決。

兩個屬性都必須有值,並且初始化完成後永遠不會為nil。在這種場景中,需要乙個類使用無主屬性,而另外乙個類使用隱式解析可選屬性。

解決閉包引起的迴圈強引用,通過定義捕獲列表。

8、internal:可以訪問自己模組中原始檔裡的任何實體,但是別人不能訪問該模組中原始檔裡的實體。

9、swift中的private訪問和其他語言中的private訪問不太一樣,它的範圍限於整個原始檔,而不是宣告。

10、元組的訪問級別與元組中訪問級別最低的型別一致。

11、子類的訪問級別不得高於父類的訪問級別。

swift2 0 學習筆記Two

var myarray 1,4,6,5,2 var sc 0 for str in myarray sc 1 print myarray,string sc 1,4,16,15,2 5 let optionalstr string?hello world print optionalstr nil ...

swift2 0 學習筆記four

override func viewdidload one two three let mychatacters character d l g let str string mychatacters print str dlg 建立乙個帶有預設值的陣列 let tt double count 6 ...

swift2 0 學習筆記Thirteen

import uikit class viewcontroller uiviewcontroller else 該閉包引用了 self 即強引用了 htmlelement 例項,lazy var ashtml void string 該變數又強引用了閉包 paragraph nil 不會觸發 dei...