最近把
《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...