精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Swift高級語法學習總結

移動開發 iOS
本文主要總結了Swift的高級語法其中包括:函數,閉包,枚舉,結構體,屬性(成員變量),函數(成員方法),角標(subscript),繼承……

1.函數

1.1 func funcNmae()->(){} 這樣就定義了一個函數,它的參數為空,返回值為空,如果有參數和返回值直接寫在兩個括號里就可以了

1.2 參數需要指明類型,而如果沒有返回值可以不寫->(),返回值只需要寫返回類型,如果寫了返回名稱,可以在函數調用后的值用點語法訪問

1.3 在參數名稱前可以加上外部參數名,調用的時候就可以帶上它了,如果外部參數名和內部參數名相同則可以直接在內部參數名前加#即可

1.4 如果跟參數設置一個默認值,則swift會自動加上外部參數名,如果不想有在前面用下劃線就可以_,如果默認值參數不在***則不能省略,在傳參時傳一個下劃線進去就可以

1.5 在***一個參數后面加...代表是這個參數是可變參數并且類型就是它,參數個數至少是0個,在函數內可以使用for in 這個參數獲得 這些參數

1.6 每個參數前面其實有一個隱藏的關鍵字let,如果想讓參數可變(可賦值)則需要加上var關鍵字,不過也只是能賦值,因為是值拷貝所以不能修改外部參數的實際值,如果要變成地址傳遞,需要在參數前加inout 關鍵字,而實參需要加上& ,

1.7 swift中函數其實也只是中類型,函數名就是變量名,比如let func1 : () -> () 聲明的就是個無參數無返回值的函數類型,所以如果一個函數返回一個函數的話和返回一個普通變量沒什么區別

2.閉包

2.1 閉包代表了一段程序代碼,{ (傳入參數) -> 返回值的類型 in ... 表達式 ... },函數只是閉包的一個特例

2.2 閉包可以推斷返回類型,所以可以省略->返回值類型,參數類型也可以推到,所以參數類型也不要,括號也可以去掉,如果閉包只有一個表達式直接可以省略掉return關鍵字,因為我們可以用$0/$1簡寫參數,所以參數也可以省略掉.

2.3如果閉包是函數***一個參數,則可以去掉小括號,直接用大括號里的內容,不過需要大括號緊接著寫,叫尾隨閉包

2.4 內層返回函數會捕獲外層的變量的值,當內層函數返回后,外層函數的內部變量并不會釋放內存,它的變量的值會跟著內部函數的執行而變化

3.枚舉

3.1 用enum CompassPoint{ case North, South , East, West}定義枚舉,可以不用逗號,和聲明語句一樣分開用多個case寫就可以了

3.2 可以用元組來設定枚舉對應每項中的值,并可以用switch case 中的值綁定來判斷,

3.3 枚舉類型如果初始化為Int類型,它的下一項也會有一個加1的原始值,不過枚舉直接復制成string都可以的

4.結構體

4.1 結構題的屬性必須初始化,必須有默認值或者通過構造器init

4.2 結構體本身是值傳遞,如果一個結構體賦值給另外一個結構體了也是兩份拷貝,互相修改不會有影響

4.3 如果一個結構體用let聲明了,那么它內部的值就不能再做修改了,var聲明的結構體才能修改

4.4 但是class不同,對象的賦值會是同一份引用,修改會影響到另外一個對象,但是let 聲明的變量也是不能賦值的,只是能修改它內部的值而已

5.屬性(成員變量)

5.1 結構體/類在初始化的時候成員變量一定要有值,如果你沒有給出初始化方法,則默認有一個包含所有必須初始化的的init方法,如果你提供了,默認了就沒有了

5.2 (延遲屬性)用let聲明的成員變量,就不能再修改了,如果是一個耗時的屬性比如值是一個自定義對象,可以加上lazy屬性,它只有在用到的時候才會對這個屬性做初始化,避免不要的消耗(延遲屬性)

5.3 (計算屬性)有的屬性是根據其它的屬性計算出來的,并不是一個必須的屬性,只是讓使用的時候方便了些,在屬性定義后面加上set/get方法,get方法需要返回一個值,set方法有一個參數,用來設置其它屬性,如果不要參數就不要寫參數外面的括號,它就有一個默認的參數newValue

5.4 如果只有get方法就是只讀屬性,只讀屬性swift提供了一種簡寫方式,直接把返回語句寫在最外面的大括號里就可以了

5.5 swift提供了屬性監聽方法:willSet和didSet,兩個都是一樣有一個參數,分別將要設置的值,和屬性過去的值,同樣你如果不提供參數,會用兩個默認的newValue和oldValue.這兩個方法和set/get方法并列,在didSet方法中可以直接修改(調整)屬性的值,但是這兩個方法不能和set/get方法共存

5.6 swift中有類別屬性,enum/struct 用關鍵字static,class就用class關鍵字,在class中let 聲明的需要直接賦初始值,var聲明的必須用get方法return,因為swift不允許class儲存類屬性,而enum/struct可以

6.函數(成員方法)

6.1 class中的函數都不需要加上外部參數,因為除了***個參數都默認加上了#符號,不過這只是swift幫你做了點事情而已,它并沒有在語法上強制你做什么,你想為***個參數加上外部參數也行,都用_代替默認的外部參數都可以

6.2 在swift里self.x不代表會調用setX/getX方法,所以直接可以在set/get方法里這么用.

6.3 在struct和enum中,成員方法不允許修改成員變量,如果要修改需要加上mutating關鍵字,但是如果聲明的結構體變量是一個let常量的話,這個方法也是不允許調用的.

6.4 在struct和enum中你可以在mutating方法中直接跟self賦值成另外一個變量

6.5 在struct和enmu中用static標識一個方法是類方法,而class中用class關鍵字

7.角標(subscript)

7.1 重寫subscript,類似于subscript(index: Int) -> Int{},里面寫set/get方法,和聲明變量,根據傳參和返回值來確定下標的類型和返回值,重寫了這個方法這個對應的類型就可以用角標了.

7.2 subscript方法參數的個數對應角標的個數,例如兩個參數:mar[2,3]

8.繼承

8.1 swift中沒有基礎類,所有不繼承其它類的的類都是基礎類,重寫父類中init方法,要先調用super的init方法,然后再在后面修改屬性的值,訪問屬性直接用屬性名字就可以了,不用用self等.

8.2 要重寫屬性和重寫方法類似,直接加個override就好了,在重寫的set/get方法也可以調用super對應的屬性值,或設置值都可以.

8.3 覆蓋了didSet屬性監視器就不能再覆蓋set/get方法了,跟方法或屬性加上final關鍵字可以防止被子類覆蓋

9.初始化(init)

9.1 init方法和普通方法一樣,你需要在init方法中把每個必須要賦值的屬性都賦值,否則會出編譯錯誤,init方法會給每個參數加上#,不要它的話可以用_,在方法內部用self訪問,也可以不用

9.2 如果你自定義了init方法,那么swift會不再提供默認的init方法,你可以自己寫一個init方法,init方法帶不帶參數什么都是可以的,自己決定就行

9.3 如果你想一個init方法中調用另一個init方法,需要加上一個convenience關鍵字,在這個init方法里就可以調用另一個init方法了

9.4 在子類繼承父類的時候,首先需要初始化子類的成員變量,然后才能調用super的init方法初始化父類的屬性,***可以修改子類和父類的屬性,如果這個屬性是父類的,在子類中也是用self訪問,因為這個屬性已經是它自己的了

9.5 如果子類一個init方法都沒有提供,那么子類繼承父類所有的構造器,可以用父類的init方法初始化

9.6 在初始化屬性的時候,可以用閉包實現,只要在復制的=后面加上{},你們寫return和其它語句,***在{}后面加一個()表示閉包立刻執行,閉包和屬性的set方法是類似的,只是在最開始提供的

10.銷毀方法(deinit)

10.1 deinit方法會在對象銷毀的時候調用,可以打印判斷它時候銷毀

11.內存管理(ARC)

11.1 可選類型或者普通類型屬性只要對一個對象有一個引用,它的這個對象的引用計數就要加1,如果兩個對象相互引用就會產生引用循環,所以需要跟其中的一個屬性用關鍵字weak聲明為弱引用,就是可以設置為nil

11.2 一般用weak聲明的用可選類型,因為它引用的可能為nil,如果你在調用的時候能確定它是有值的,你可以聲明為unowned的普通類型,它的效果是如果你能保證調用這個屬性時不為nil時,swift建議用unowned,其它都和weak一樣的

12.可選鏈(Optional Chaining)

12.1 對于一個可選類型的屬性可以用?.和!.來訪問,如果確定有值可以用a!.b!.c!.d,如果不確定有值可以用a?.b?.c?.d

13.類型轉化

13.1 可以用 a is b 來判斷對象a是否是b類型,返回值是一個boolean類型的值

13.2 as 可以把普通類型轉化,比如double,int,cgfloat之類都可以用它轉化

13.3 可以用 as? 把之類轉化成父類,它的結果可以是nil或者轉型成功,所以結果是一個可選類型,轉化成功后用?.來訪問方法或屬性,也可以做可選綁定.

13.4 如果一個對象一定可以轉化成功,則可以用as!轉化,如果轉化不成功會報運行時錯誤,比如在一個數組中全是animal,但是聲明時是anyobject就可以這樣用.

14.擴展/協議(categories,extension,protocol)

14.1 swift的extension沒有名稱,它是擴展到所有的實體類的,它不可以增加成員屬性,但是可以增加計算屬性

14.2 可以在protocol中聲明屬性和方法,可以定義屬性時候是只讀的或者是可讀可寫的

14.3 可以讓一個extension繼承一個protocol,在里面實現對應的方法

14.4 協議的類型是protocol<protcl1,protcl2>

15.泛型

15.1 可以在func或struct后面跟上<T1,T2>,在參數中就可以聲明參數類型為這個類型,完全可以把它看做是一個類型

16.運算符重載

16.1 在swift中運算符可以重載,方法名就是運算符號,參數的個數和類型是根據它是幾目運算符和運算符兩邊對應的參數類型決定的.

責任編輯:chenqingxiang 來源: Hekui的博客
相關推薦

2015-07-07 10:43:59

Swift語法基礎

2009-09-10 13:54:27

LINQ語法

2010-05-27 17:56:39

MySQL存儲過程

2011-08-05 14:16:47

Objective-C 變量 方法

2011-08-18 15:19:28

XcodeObjective-C語法

2009-08-21 18:01:32

C#匿名方法

2009-08-12 17:32:44

C#反射方法

2009-08-18 12:52:33

C#枚舉類型

2016-06-02 15:10:12

SwiftSelector

2017-05-26 10:15:39

Java高級特性反射

2017-05-10 15:41:29

機器學習算法數據

2017-03-17 09:12:13

基礎算法路線

2009-08-14 17:38:08

C#改寫方法

2009-08-31 16:51:11

C# Main()方法

2009-08-27 09:27:49

C#擴展方法

2010-01-25 11:21:01

C++語法

2010-09-06 13:59:23

CSS縮寫

2009-12-14 14:01:29

Linux學習方法

2009-10-14 09:27:30

VB.NET編碼算法

2009-08-14 09:41:03

C#遺傳算法
點贊
收藏

51CTO技術棧公眾號

亚洲一区在线视频观看| 欧美亚洲网站| 欧美xxxx在线观看| 成品人视频ww入口| 国产对白叫床清晰在线播放| 韩国成人在线视频| 欧美中文字幕视频| 三级黄色免费观看| 色88888久久久久久影院| 在线观看日韩电影| 97超碰国产精品| 黄色片在线播放| 国产a视频精品免费观看| 国产不卡av在线| 久久久久香蕉视频| 久久免费精品视频在这里| 亚洲福利视频久久| 国产精品嫩草影院8vv8 | 欧美日韩国产成人在线观看| 在线 丝袜 欧美 日韩 制服| 精品一区二区三区亚洲| 色综合一个色综合| 欧美黄网在线观看| 91精品专区| 91网址在线看| 福利视频久久| 国产人妖一区二区三区| 日韩成人av影视| 98精品国产高清在线xxxx天堂| 天海翼在线视频| 免费成人av| 亚洲精品wwww| 免费黄色a级片| 精品一区二区三区在线观看视频| 91久久人澡人人添人人爽欧美 | 手机在线免费观看av| 欧美高清在线一区| 日本一区二区不卡高清更新| 天天操天天插天天射| 国产高清在线观看免费不卡| 国产精品爽黄69| 夜夜躁日日躁狠狠久久av| 亚洲免费综合| 456国产精品| 黄色激情视频在线观看| 韩国自拍一区| 欧美激情中文字幕在线| 国产成人无码aa精品一区| 欧美成人直播| 久久视频免费观看| 亚洲波多野结衣| 我不卡手机影院| yw.139尤物在线精品视频| 人人艹在线视频| 成人在线免费小视频| 中文日韩在线观看| 三级黄色录像视频| 欧美在线免费一级片| 欧美猛男性生活免费| 国产乱国产乱老熟300| 欧美永久精品| 午夜精品久久久久久久白皮肤 | 女女色综合影院| 亚洲丝袜制服诱惑| 91视频 - 88av| 欧美78videosex性欧美| 亚洲va欧美va国产va天堂影院| 青青青青在线视频| 亚洲黄色网址| 在线欧美日韩精品| 亚洲一二三av| 成人资源在线| 亚洲欧美日韩网| 亚洲熟女少妇一区二区| 欧美日韩精品一本二本三本| 欧美劲爆第一页| 久久精品视频1| 日韩不卡手机在线v区| 成人黄色免费片| 成人免费视频国产| 久久久精品综合| 视频一区视频二区视频| 69xxx在线| 欧美视频一区二区三区…| 国产嫩草在线观看| 日韩三级精品| 国产亚洲美女久久| 青青草精品在线视频| 国产一区二区三区的电影| 国产精品网站大全| 亚洲国产www| 国产日韩一级二级三级| 色乱码一区二区三区熟女| 白浆在线视频| 欧美久久久影院| 日韩无码精品一区二区| 日韩免费高清| 欧美精品久久一区二区| 中文无码精品一区二区三区| 国产不卡高清在线观看视频| 欧美一级爱爱| xxxx视频在线| 欧美日本一区二区三区四区| 精品国产一区在线| 偷偷www综合久久久久久久| 欧美一区二区色| 国产999久久久| 国产日韩精品一区二区三区在线| 97碰在线视频| 巨大黑人极品videos精品| 日韩av在线免费观看一区| 成人涩涩小片视频日本| 老鸭窝毛片一区二区三区| 成人动漫视频在线观看完整版| 国产综合视频一区二区三区免费| 一区二区三区国产| 国产又大又黄又猛| 亚洲免费成人av在线| 欧美黑人国产人伦爽爽爽| 一级aaaa毛片| 欧美国产丝袜视频| 日韩av综合在线观看| 日韩精品视频中文字幕| 色诱女教师一区二区三区| 黄色在线观看国产| 成人午夜激情在线| 成人在线免费高清视频| 亚洲国产综合在线观看| 亚洲图片欧美日产| 特级西西444www大精品视频免费看| 国产精品自拍一区| 中文字幕一区二区中文字幕| 91伊人久久| 一区二区三区日韩在线| 狠狠人妻久久久久久| 99久久精品免费看国产| 成人短视频在线观看免费| 国产精品久一| 久久亚洲国产精品| 国产伦理一区二区| 成人免费在线视频| 欧美日韩精品区别| 91精品国产成人观看| 国产日韩在线精品av| 992tv免费直播在线观看| 91国偷自产一区二区开放时间 | 2019中文字幕全在线观看| 亚洲乱码国产乱码精品精软件| 亚洲乱码国产乱码精品精的特点| 中文字幕 日韩 欧美| 久久中文视频| 成人亚洲激情网| 91福利国产在线观看菠萝蜜| 欧美一卡二卡在线观看| 久久免费视频播放| 成人免费福利片| 国产精品无码一区二区在线| 欧美韩一区二区| 欧美综合激情网| 国产系列在线观看| 欧美日韩一卡二卡三卡 | 欧美视频在线免费看| 超碰男人的天堂| 性娇小13――14欧美| 青青草成人网| 伊人国产精品| 性欧美xxxx视频在线观看| 免费a在线观看| 欧美日韩国产首页| 欧美精品成人久久| 91在线一区二区三区| 国产精品无码专区av在线播放| 精品国产一区二区三区噜噜噜| 国产精品日日摸夜夜添夜夜av| 欧美激情二区| 亚洲成人黄色在线观看| 黄色片视频免费| 17c精品麻豆一区二区免费| 男人女人拔萝卜视频| 1024精品一区二区三区| 日本一区二区在线视频观看| 国产精品成人3p一区二区三区 | av亚洲一区| 久久99国产精品久久久久久久久| 人妻夜夜爽天天爽| 欧美视频在线观看一区| 久久久国产精华液| www国产精品av| 亚洲视频在线不卡| 久久综合中文| 在线观看av的网址| 天堂网av成人| 亚洲精品欧美日韩专区| 在线黄色的网站| 久久人人爽人人爽爽久久| 天堂av在线资源| 欧美二区三区的天堂| 日日噜噜噜噜人人爽亚洲精品| 亚洲色图欧洲色图婷婷| 一级做a爰片毛片| 国产麻豆精品视频| 好男人www社区| 精品成人久久| 五月天色婷婷综合| 一本久久青青| 成人动漫在线视频| 国产黄色一区| 欧美在线一区二区三区四| 3d玉蒲团在线观看| 中文亚洲视频在线| 日韩二区三区| 精品av综合导航| 国产欧美熟妇另类久久久| 91久久一区二区| 日本午夜视频在线观看| 一区二区三区影院| 长河落日免费高清观看| 91麻豆精东视频| www.com日本| 国产一区高清在线| 天堂一区在线观看| 久久精品一区二区三区中文字幕| 高清无码视频直接看| 91久久夜色精品国产按摩| 久久草视频在线看| 福利电影一区| 99国产超薄丝袜足j在线观看| 欧美成人xxxx| 国产精品免费看久久久香蕉| sis001欧美| **欧美日韩vr在线| 成人影院在线视频| 国语对白做受69| 超碰在线97国产| 久久久久久久999| 图片区小说区亚洲| 欧美精品亚州精品| 羞羞的视频在线看| 欧美另类暴力丝袜| 国产原创在线观看| 久热精品视频在线| 18在线观看的| 欧美福利视频在线| 性xxxfreexxxx性欧美| 欧美日韩成人在线视频| 少妇av在线| 久久久久久久999精品视频| 国产亚av手机在线观看| 久久久亚洲福利精品午夜| 嗯~啊~轻一点视频日本在线观看| 欧美极品少妇xxxxx| 国产色播av在线| 欧美又大又粗又长| 播放一区二区| 国产一区香蕉久久| 国产一区二区三区精品在线观看 | 男人天堂成人在线| 日本系列欧美系列| 天天干天天操天天做| 国产一区二区日韩精品| 韩国一区二区三区四区| 成人精品在线视频观看| 中国黄色a级片| 国产日韩欧美精品电影三级在线| 国产又粗又黄又猛| 亚洲欧美激情小说另类| 久青草视频在线观看| 精品国产999| 国产精品露脸视频| 日韩欧美亚洲一区二区| 天天插天天干天天操| 亚洲人成电影网站色www| 日本在线观看视频| 欧美精品videosex极品1| 亚洲精品动漫| 91九色国产在线| 天海翼亚洲一区二区三区| 色播亚洲婷婷| 国产精品videossex久久发布| 成人中文字幕在线播放| 老汉av免费一区二区三区| 99国产精品免费视频| 久久久久久日产精品| caoporn91| 日韩欧美一区二区三区久久| 91 中文字幕| 日韩精品在线免费观看| 色网站免费在线观看| 久久免费福利视频| 福利一区二区| 久久久久久亚洲精品不卡4k岛国 | 加勒比色老久久爱综合网| 欧美日韩日本网| 欧美日本亚洲韩国国产| 黄色高清无遮挡| 国产成人精品影院| 国产123在线| 午夜精品久久久久久久久久久| 波多野结衣人妻| 亚洲精品一区在线观看| 在线播放麻豆| 欧美一区第一页| www.神马久久| 中文字幕av久久| 三级影片在线观看欧美日韩一区二区| 古装做爰无遮挡三级聊斋艳谭| 欧美激情综合五月色丁香小说| 国产无码精品视频| 欧美久久高跟鞋激| 黄色片在线看| 欧美在线视频免费观看| 91成人精品在线| 中文字幕一区二区三区在线乱码| 视频一区欧美精品| av2014天堂网| 亚洲国产美国国产综合一区二区 | 亚洲精品国偷自产在线99热| 国产原厂视频在线观看| 国产精品成人av在线| 欧美freesex8一10精品| 91.com在线| 国产精品99久| 特黄一区二区三区| 在线视频观看一区| 男人天堂网在线观看| 午夜精品久久久久久久男人的天堂| 精品成人18| 综合久久国产| 久久精品国产久精国产爱| 久久精品三级视频| 色综合色狠狠综合色| 色婷婷av一区二区三| 久久琪琪电影院| 国产在线播放精品| 久艹视频在线免费观看| 成人综合在线视频| 国产一级免费av| 精品乱码亚洲一区二区不卡| 日日夜夜天天综合入口| 亚洲最大福利视频网| 影音先锋日韩在线| 天天操狠狠操夜夜操| 亚洲欧洲成人av每日更新| 亚洲视频一区二区三区四区| 中文字幕久久精品| 日本成人一区二区| 丰满女人性猛交| 国产精品一区二区三区四区| 欧美成人综合色| 精品日韩av一区二区| 福利网站在线观看| 久中文字幕一区| 久久综合影音| 国产中文字幕久久| 欧美一卡二卡三卡| 久久不射影院| 久久久精品国产一区二区三区| 羞羞答答国产精品www一本| 蜜乳av中文字幕| 欧美片网站yy| 羞羞视频在线观看免费| 黄色国产精品一区二区三区| 久久精品人人做人人爽电影蜜月| 国产精品久久免费观看| 欧美一区二区三区成人| av手机免费在线观看| 欧美一区二区三区四区五区六区| 青青草国产精品亚洲专区无| 日韩在线观看视频一区二区| 精品999久久久| 亚洲欧美在线成人| 六月婷婷激情网| 99国产精品久久久久久久久久| 日本熟女毛茸茸| 久久精品国产成人精品| 91精品国产自产在线丝袜啪| av动漫在线看| 国产精品久久久久久久久搜平片| 国产手机精品视频| 8x拔播拔播x8国产精品| 久久国产精品亚洲人一区二区三区| 一起草最新网址| 都市激情亚洲色图| 国产在线观看免费麻豆| 久久综合九色99| 狠狠色丁香久久婷婷综合_中| 不卡的免费av| 中文字幕亚洲精品| 国产精品18hdxxxⅹ在线| 免费看a级黄色片| 亚洲综合丝袜美腿| www黄在线观看| 国产经品一区二区| 麻豆国产91在线播放| 国产精品自拍视频一区| 日韩在线观看你懂的| 日本成人a网站| 亚洲高清视频免费| 91福利国产精品| 91超碰国产在线|