Swift總結(jié)筆記


Swift相比OC語言有哪些優(yōu)點

1、自動做類型推斷

2、可以保證類型使用安全

Swif類型說明符

——Swift增加了Tuple表示元組類型

——Swift增加了Optional表示可選類型

常量一變量命名:

——可以用任何你喜歡的字符作為常量和變量名,包含Unicode 字符

——常量與變量名不能包含數(shù)學符號,箭頭,保留的(或者非法的)Unicode 碼位,連線與制表符

——不能以數(shù)字開頭,但是可以在常量與變量名的其他地方包含數(shù)字

\n —— 換行

\t —— 水平制表符 (4個空格)

\\—— 表示1個\

\"—— 表示1個"

\'——表示1個'

3.5e2 == 3.5乘以10的二次方

3.5e-3 == 3.5乘以10的-3次方

C的函數(shù)定義

?????????charname[10] ="China";

? ? ? ? char address[10] = {'C','h','i','n','a','\0','B','e','i','\0'};

? ? ? ? NSLog(@"%ld",strlen(name));//里面字符串的長度

? ? ? ? NSLog(@"%ld",sizeof(address));

????????//包含\0的長度(自己定義字符串長度后會使用調(diào)用后的長度)

?????????charsex[] ="nan";

? ? ? ? NSLog(@"%c",sex[2]);

在Swift中要想越界

num = num &+ 1(溢出運算)

var str1 = "China"

var str2 = str1 + "Beijing"

str1 += "Beijing"?

9 % 4 ?// ?等于1

9 % -4 ?// ?等于1

-9 % 4 ?// ?等于-1

-9 % -4 ?// ?等于-1

BOOL類型比較

只能使用 == 或者 != ? 不可以使用 ?>、<、>=、<=

當倆個元組中的數(shù)據(jù)類型及順序完全匹配時,可以使用比較運算符比較

如果元組包含Bool類型,只能使用==和!=比較,不可以使用>、<、>=、<=

Swift 標準庫只能比較七個以內(nèi)元素的元組比較函數(shù)。如果你的元組元素超過七個時,你需要自己實現(xiàn)比較運算符。

空合運算符(只適用于可選類型)

形式:a ?? b

對可選類型 a 進行空判斷,如果 a 包含一個值就進行解封,否則就返回一個值 b

表達式 a 必須是 Optional 類型

默認值 b 的類型必須要和 a 儲存值的類型保持一致

//區(qū)間運算符

1、閉區(qū)間

????a...b定義一個包含從 a 到 b (包含 a 和 b )的所有值的區(qū)間

????a 的值不能超過 b

2、半開區(qū)間

? ? a ..< b 定義一個包含從 a 到 b(不包含b)的所有值的區(qū)間

? ? a 的值不能超過 b

3、自增自減運算符在Swift中不能用

? ? ++a (前增)???????? a++ (后增)????????--a (前減) a-- (后減)


//使用索引值

var name = "qiuruobai" ? ? ? ?(后面會自定添加\0)

var index = name.startIndex //得到字符“Y”的索引值

index ?= name.endIndex ?//得到最后位置的索引值,比最后一個字符“g”的位置打1

index = name.index(after: name.startIndex) //獲取起始位置之后的索引值

index = name.index(before: name.endIndex) ?//獲取最后位置之前的索引值

index = name.index(name.startIndex, offsetBy:3) //

index = name.index(name.endIndex, offsetBy:-4) //

print(name[index])

遍歷字符串中的每個字符

//for in循環(huán)

for item in name {

? ? print(item, terminator:"")

}

print()

//while循環(huán)

var offset = 0

while offset < name.count {

????let index = name.index(name.startIndex, offsetBy: offset)

????//(let index:String.Index = name.index(name.startIndex, offsetBy: offset))

????print(name[index])

????offset += 1

}

//遍歷字符串的所有索引值,從而遍歷每個字符

for myIndex in name.indices {

????print(name[myIndex])

}

可選綁定語法

if let item = a {

????print{item}

}

//遍歷語法

for var item in1...5 ? { ? ? ?//如果不加var默認為let

????print{item}

}


let base = 3

let power = 10

var answer = 1

//如果在循環(huán)體中不需要循環(huán)變量的值,可以使用下劃線代替變量的名稱

for _ in 1...power {

answer * = base

}

Switch語句中可以加 int char string 枚舉 double(后面必須加default)如果想滿足多個條件打印同一個結(jié)果可以用“,”來隔開

var ch = 3

switch ch {

case 10:

print("不講價")

case 7...9:

print("\(ch)折")

default :

print ("不可能")

} //可以添加元組類型的數(shù)據(jù)


給循環(huán)添加 標簽

outer: for I in 1...3 {

????inner:for j in 1...5{

????????break outer

????}

print("I = \(i),j = \(j)")

}


//Swift中,Struct,Double,String、數(shù)組、字典、都是值類型

//swift中,類、函數(shù)、閉包都是引用類型

//如果結(jié)構(gòu)體中的s已經(jīng)是常量,里面的成員變量和結(jié)構(gòu)體本身就不可以重新賦值了

//如果類中的s是常量,里面的成員變量可以重新賦值變量,不能重新賦值常量

//、在swift中 == 號只能用在值類型不能用在引用類型(== 在自定義的結(jié)構(gòu)體中自定義的類中也不可以用)

//Swift中 === (恒等于) ?!==(恒不等于)只能用于引用類型,不能用于值類型,判斷倆個對象指向同一個內(nèi)存空間(判斷地址)

//在結(jié)構(gòu)體中,必須講方法聲明為可變的,才可以在方法體中改變屬性的值

//在類中可以直接改變屬性的值


重寫set、get方法的時候方法里面不能出現(xiàn)sum屬性本省否則出現(xiàn)死循環(huán)、

如果沒有加set、get就會默認重寫get語句,get中有倆個語句的話就必須添加get方法

lazy起到延遲加載作用,在調(diào)用的時候使用

//便利構(gòu)造器(如果在某個構(gòu)造器中調(diào)用其他的構(gòu)造器,須要將構(gòu)造器做成便利構(gòu)造器)

指定構(gòu)造器與便利構(gòu)造器的區(qū)別:

默認構(gòu)造器是系統(tǒng)提供的構(gòu)造器

指定構(gòu)造器是類中主要的構(gòu)造器,一個指定構(gòu)造器將初始化類中所提供的所有屬性

便利構(gòu)造器是類中次要的、輔助型的構(gòu)造器,可以定義便利構(gòu)造器來調(diào)用同一個類中的指定構(gòu)造器

//子類可以繼承父類中所有的屬性和方法,子類可以有自己獨有的屬性和方法

//子類可以重寫父類中的方法

你可以將一個繼承來的只讀屬性重寫為一個讀寫屬性,只需要在重寫版本的屬性里提供,getter 和setter 即可,但是,你可以將一個繼承來的讀寫屬性重寫為一個只讀屬性

循環(huán)強引用問題(retain cycle),在倆個類中互相包含對方的對象做成自己的屬性會發(fā)生循環(huán)強引用

解決:1、使用弱引用,用一個weak來修飾

2、unowned(不能使用引用類型,只能使用基本類型)

thows:一般用于方法定義的按返回值之前,表好似將該方法做成一個可拋出錯誤的方法(throwing)

Thow:一般用于方法體內(nèi),拋出某個具體的錯誤,如果能執(zhí)行throw,后續(xù)語句都不會執(zhí)行,該方法調(diào)用立即結(jié)束,等效return語句

Ios ?多態(tài)

不同類中有相同方法,調(diào)用的時候互不影響

父類指針指向子類,調(diào)用一個被重寫的方法,父類指針調(diào)用這個方法呈現(xiàn)的都是子類中方法的定義執(zhí)行

擴展

//var name:String = ""(在擴展中不可以擴展存儲屬性)

//可以擴展“計算屬性”

//可以擴展“只讀屬性”

//存儲類型的類屬性

//計算類型的類屬性

//只讀類型的類屬性

//添加對象方法

//添加類方法

//在擴展中只能為類添加便利構(gòu)造器,不可以添加指定構(gòu)造器


oc 的成員變量修飾符

<1>@private : 私有的,只能在類內(nèi)部訪問,在類的子類或類的外部類中都訪問不到!

<2>@protected : 受保護的,可以在類和子類中訪問,在類的外部不可以訪問(默認修飾符)

<3>@package : 包保護的,可以讓相同包中其他類訪問,但是不可以被不同包中的類訪問?


Swift 屬性的訪問修飾符

(1)private:可用于屬性和方法,只能被本類內(nèi)部訪問,子類或外部類都不可以訪問

(2)filePrivate:文件私有,在文件中任何地方都可以訪問,在其他文件中不可以訪問,等效于OC中的@protected

(3)internal:內(nèi)部訪問,可以讓相同包中的任意類訪問,其他包中的類不可以訪問 (默認修飾符)

(4)public、open:公開的,可以在任何類中訪問,但是open只能在類中使用,不可以用于結(jié)構(gòu)體和枚舉等

注:僅為個人總結(jié),如有理解錯誤歡迎大家糾正????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)部分(The Basics) 當推斷浮點數(shù)的類型時,Swift 總是會選擇Double而不是Float。 結(jié)合...
    gamper閱讀 1,326評論 0 7
  • 一、簡介 蘋果于2014年WWDC(蘋果開發(fā)者大會)發(fā)布的新開發(fā)語言,可與Objective-C共同運行于Mac ...
    Silence_xl閱讀 100評論 0 1
  • 常量與變量使用let來聲明常量,使用var來聲明變量。聲明的同時賦值的話,編譯器會自動推斷類型。值永遠不會被隱式轉(zhuǎn)...
    莫_名閱讀 460評論 0 1
  • 渲染: 1 當前屏幕渲染:在GPU的當前屏幕緩沖區(qū)中進行的渲染 2 離屏渲染:在GPU當前屏幕緩沖區(qū)外另建緩沖區(qū)渲...
    adrian920閱讀 399評論 0 0
  • 一、Swift預覽 1.1 簡單值 let作為常量 var作為變量,常量只有在定義時賦值一次,可以多次使用。如 l...
    雨潤聽潮閱讀 304評論 0 0