麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

the-swift-programming-language學習筆記

2019-11-14 19:53:16
字體:
來源:轉載
供稿:網友

常量和變量

常量是定義是不可以修改的,在類中定義的常量,可以在構造函數中賦值。let修飾
變量是可以修改的。var修飾
字符串中字符的遍歷
for code in string {}
for codeunit in string.unicodeScalars {}

控制語句

break 跳出循環體
continue 終止當前,進入下一個循環
label 配置break和continue使用;用label標記循環體,break label跳出標記的循環體,continue label 是進入下一個標記的循環
fallthrogh:switch語句中使用,用在case節點方法后面,作用是貫穿下一個case
switch語句中必須包含 default節點,case節點不需要使用break

范圍使用

number1&hellip;number2 == number1<=var<=number2
number1..<number2 == number1<=var<number2

元組

var tuples = (int,string,obj,…)

字典

Dictionary<KyeT,ValueT>
for (key,value) in Dictionary {}
for key in Dictionary.keys
for value in Dictionary.values
在字典復制時,取決于字典的value是值類型還是引用類型

函數

func Function(params) -> params { 方法體 }
函數的參數默認是let 常量,需要變量需要在定義參數是,定義var
參數定義時,可以賦值默認值 func Test(paramens:String = "default value") {}
可變參數 func sum(numbers:Double…) 類似傳遞一個Array<T> 的參數
參數傳遞引用 inout 關鍵字
返回多值(返回一個元組類型的值)
函數本身可以作為參數傳遞,也可以作為范圍值
參數的內部名稱和外部名稱

函數類型

嵌套函數

定義在其他函數體中的函數

閉包

類似lambdas表達式
全局函數是一個有名字,但不會捕獲任何值得閉包
嵌套函數是一個有名字并且可以捕獲其封閉函數域內值得閉包
閉包表達式是一個利用輕量級語法所寫的可以捕獲其上下文中變量或常量的沒有名字的閉包
表達式: 
{ (parameters) -> returntype in
statements
}
var numbers =[1,3,30,16,25,73,97]
func backwards(s1:String, s2:String) -> { return s1>s2 }
作為函數參數傳遞
sort(numbers,backwars)
閉包表達式傳遞
sort(numbers,{
(s1:String, s2:String) -> bool in
Return s1>s2
})
對于短的閉包可寫作一行
Sort(numbers,{(s1:String, s2:String) -> bool in return s1>s2})
閉包能自動推斷參數類型
sort(numbers,{s1, s2 in return s1>s2})
單行表達式可以省略return 關鍵字
sort(numbers,{s1,s2 in s1>s2})
參數名簡寫
sort(numbers,$0>$1)
運算符函數
sort(numbers,>)
尾隨閉包:把閉包作為最后一個參數傳遞給函數,就可以使用尾隨閉包
sort(numbers){
(s1:String, s2:String) -> bool in
Return s1>s2
})
Sort(numbers){$0>$1}

結構和類

在swift中只有類似引用類型,其他都是值類型

  • 共同:

定義屬性
定義方法
定義下標
定義構造器
擴展方法(external)
遵循協議(PRotocol)

  • 不同:

類允許繼承
類型轉換允許在運行時檢查和解釋一個類型實例的類型
析構允許一個類實例釋放任何其被分配的資源
引用計數允許對一個類的多次引用

屬性

可以通過閉包和函數來設置屬性默認值

存儲屬性

存儲在特定類或結構的實例里的一個常量(let 定義)或變量(var 定義)

常量和存儲屬性

定義一個常量的結構體屬性,該結構體的所有屬性也就變成了常量,對已引用類型的class則不一樣,把一個class的實例賦給一個常量后,仍然可以修改實例的變量屬性

延遲存儲屬性

用@lazy 來表示一個延時存儲屬性,延時存儲屬性必須用 var聲明;當屬性的值依賴在實例的構造過程前無法知道具體值的外部因素,或者當屬性的值需要復雜大量的計算是,可以只在需要的時候來計算

計算屬性

計算屬性不直接存儲值,而是提供一個getter來獲取值,一個setter來間接設置其他屬性或者變量的值。在setter中默認使用newValue表示接收的值

只讀計算屬性

就是只有getter的計算屬性

屬性監聽器

willSet 在設置新的值之前調用。默認使用newValue表示新值
didSet 在新的值被設置之后立即調用。默認使用oldValue表示舊值

全局變量和局部變量

計算屬性和屬性監聽器所屬的模式也可以用于全局變量和局部變量,全局變量是在函數、方法、閉包或任何類型之外定義的變量,局部變量是在函數、方法或閉包內部定義的變量
全局的常量或變量都是延遲計算的,跟延遲計算屬性相似,不同的地方在于,全局的變量或者常量不需要標記@lazy特性;局部范圍的常量或者變量不會延遲計算。

類型屬性

類型屬性用于定義特定類型所有實例共享的數據
對于值型類(枚舉和結構)可以定義存儲和計算型類型屬性,對于class則只能定義計算型類型屬性
在枚舉和機構中用static 聲明一個類型屬性
在class中用class聲明一個類型屬性

方法

值類型的屬性不能在他的實力方法中被修改,如果確定需要修改某個具體值類型的屬性,可以選擇變異方法(用 mutating 聲明的方法),然后方法就可以從方法內部修改它的屬性

類型方法

于類型屬性相同

附屬腳本 subscript

語法:
subscript(parameter:parametertype) -> returntype {
get{
}
set(newValue){
}
}

構造器

在類和結構中定義變量或常量屬性必須必須在構造器中賦值,或者在定義時賦值
在構造器中可以修改常量屬性

可選屬性類型

用type? 聲明,默認值是nil

自動引用計數(ARC)

Swift使用ARC來跟蹤管理應用使用的內存。大部分情況下,意味著在swift中,內存管理仍然工作,不需要自己考慮內存管理的事情,當實例不再被使用是,ARC會自動釋放類實例所占的內存
解決類實例見的強引用環
弱引用 (使用weak聲明若引用)
無主引用 (使用unowned 聲明無主引用)
無主引用以及隱式展開的可選屬性 (隱式展開的可選屬性 type!)
閉包產生的強環形引用:將一個閉包賦值給類實例的某個屬性,并且這個閉包使用了實例。這個閉包可能訪問實例的某個屬性,例如self.someProperty,或者調用某個方法,例如:self.someMethod()。
解決閉包閉包產生的強環形引用,定義占有列表(用 [unowed/weak self] 聲明)
@lazy var property : (parametertype) -> returntype = {
[unowned self] (parameter: parametertype) -> returntype in 
}
當閉包和占有的實例總是相互引用并且同時銷毀時,閉包占有定義為unowned。相反,當占有引用有時可能會說nil時,將閉包內的占有定義為weak。弱引用總是可選類型。 
兩個屬性值都是可選類型都可能是nil時,使用弱引用
兩個屬性中只有一個是可選類型,并且可能nil時,使用無主引用
兩個屬性都必須有值就使用無主引用和隱式展開可選屬性。

強制拆包

聲明可選類型的強制拆包:var s = String? var t = s!

擴展

extension SomeType = {}

協議

protocol SomeProtocol {}

突變方法

能在方法或函數內部修改實例類型的方法稱為突變方法。mutating

 

原文地址:https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_programming_language/index.html

譯文地址:http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品成人免费一区久久羞羞 | 精品国产一区二区三 | 强伦女教师视频 | 国产精品啪 | 三级国产三级在线 | 久久国产精品久久久久久 | 91一区二区三区久久久久国产乱 | 久久精品亚洲成在人线av网址 | 男人的天堂色偷偷 | 欧美大电影免费观看 | 最新一级毛片 | 色97在线| av免费在线网 | 大学生a级毛片免费视频 | 午夜视频在线在免费 | av成人一区二区 | 国产美女视频一区二区三区 | 91成人亚洲 | 天天草夜夜骑 | 羞羞视频免费视频欧美 | 国产女同疯狂激烈互摸 | 精品二区在线观看 | 久久精品视频在线 | 精品国产一区二区三区四区在线 | 污污黄| 天天躁狠狠躁夜躁2020挡不住 | 91av原创| 成人在线激情视频 | 92看片淫黄大片一级 | 国产在线播放一区二区 | 黄色视屏免费在线观看 | 私库av在线免费观看 | 成人国产精品一区 | 欧美在线观看视频一区二区 | 国产午夜精品久久久久久久蜜臀 | 亚洲人成网站免费播放 | 国产精品久久久久久久久久大牛 | 激情宗合| 成人444kkkk在线观看 | 激情视频日韩 | 人人舔人人插 |