1.swift優(yōu)先使用常量球匕,要變化的話變成變量.如果使用let 聲明了一個(gè)常量鸠匀,那么他的內(nèi)存地址是不會變化的了胁住。如果用var聲明的話五芝,就可以更變其內(nèi)存地址
2.swift 中只有Bool類型痘儡,也就是true/false
3.Int 相當(dāng)于 Nsinteger Uint 表示的NUInteger
4.Swift是一個(gè)強(qiáng)類型語言,沒有所謂的id類型枢步。沒有動態(tài)決定對象類型的特性沉删。swift中的類型推導(dǎo)可以根據(jù)后面的類型來推導(dǎo)前面的對象的類型
5.option鍵可以點(diǎn)擊查看 推導(dǎo)得到的類型
6.swift中沒有隱式轉(zhuǎn)換的概念(所以必須要保證類型一致),oc中是可以做隱式轉(zhuǎn)換的醉途。
必須要強(qiáng)制編程相同的類型
7.if 語句 必須有明確的判斷 沒有非0/nil就是真的概念了矾瑰。if 后面不需要加小括號了
8.else if 用法與 oc中用法是一致的
9.guard,swift中獨(dú)有隘擎。
guard 條件表達(dá)式 else {
//條件語句
break
}
10.swift中的switch 后面可以不加括號 殴穴。 case后面的break也是可以省略的。
swich 如果想做case穿透,也就是說如果想掉進(jìn)某一個(gè)case之后采幌,后面的代碼還可以繼續(xù)執(zhí)行劲够,那么就寫一個(gè)關(guān)鍵字 fallthrough。case后面可以帶多個(gè)判斷條件休傍,沒一個(gè)條件后面都要加一個(gè)逗號分割征绎。switch也是可以判斷浮點(diǎn)數(shù)類型的,也可以判斷字符串類型磨取。switch也是支持區(qū)間進(jìn)行判斷的
11.for循環(huán) 后面帶的小括號是可以省略的 如果臨時(shí)變量不需要用 也是可以省略中間變量的
for i in 0..<10 {
}
for _ in 0..<10 {
}
12.while再swift 中 沒有存在非0即真人柿,所以后面的判斷必須要有明確的bool值,后面的小括號也是可以省略的
while a > 10 {
}
13.do while 循環(huán) swift 中是沒有這種的 只有repeat
repeat {
} while a < 10
14.String是一個(gè)結(jié)構(gòu)體 性能更高忙厌。NSString是一個(gè)對象凫岖,性能差一點(diǎn)。String支持直接遍歷的逢净。Swift支持String與NSString之間的無縫轉(zhuǎn)換
遍歷字符串
拼接字符串
如果字符串與數(shù)字進(jìn)行拼接的時(shí)候
字符串的截取 substring....
15.定義不可變數(shù)組
let array = [1,2,3,4]
定義可變數(shù)組
var arr = [String]()
16.字典
//不可變字典
let dic = ["name":"by","age":22] as [String : Any]
let dicA : [String:Int] = ["name":22]
//可變字典
var mutableDic = [String:Any] ();
//添加元素
mutableDic["name"] = "boyan"
mutableDic["age"] = 22
//刪除元素
mutableDic.removeValue(forKey: "name")
//獲取一個(gè)元素
mutableDic["age"]
//修改元素
mutableDic["age"] = 29
//遍歷字典
for key in mutableDic.keys {
print(key)
}
for (key,values) in mutableDic {
print(key)
print(values)
}
//字典合并
//即使類型一致 兩個(gè)字典也是無法合并的
17.元組, 數(shù)據(jù)是保存再小括號中的哥放。
let info = ("wht",1,2)
元組的取值
info.0
18.swift中的任意屬性,在創(chuàng)建的時(shí)候必須有明確的初始化值汹胃。所以需要使用可選類型婶芭。可以這么寫
但是這種寫法太繁瑣着饥,就有了下面這種語法糖
如果想把可選類型中的值取出來,然后可以做強(qiáng)制解包
強(qiáng)制解包是一個(gè)非常危險(xiǎn)的操作惰赋,如果強(qiáng)制解包的數(shù)據(jù)為空宰掉,那么變量強(qiáng)制解包之后就會崩潰。在強(qiáng)制解包之前赁濒,一定要對可選類型做判空操作轨奄。那么就會有下面的代碼
這樣每次使用變量的時(shí)候都要強(qiáng)制解包一下,非常不方便拒炎。就有了可選綁定的寫法挪拟。
這樣,以后再使用變量的時(shí)候就不用每一次都做強(qiáng)制解包操作了
19.swift中的函數(shù)
func 方法名字(方法參數(shù)) -> 方法返回值類型 {
}
swift中可以提供一個(gè)有默認(rèn)值的函數(shù)击你。
這樣如果調(diào)用這個(gè)函數(shù)的時(shí)候沒有給name參數(shù)傳值玉组,就會打印默認(rèn)的noya值
可變參數(shù)
函數(shù)的嵌套使用
20.類 如果類中的某一個(gè)方法是對于父類的重寫,那么一定要協(xié)商override關(guān)鍵字丁侄。 swift中不建議使用self關(guān)鍵字惯雳。
計(jì)算屬性 是通過別的屬性計(jì)算得到的屬性.
定義類屬性 需要加static關(guān)鍵字
21.類的構(gòu)造函數(shù)。
注意 必須重寫父類的構(gòu)造函數(shù) 關(guān)鍵字 override鸿摇,super.init()可以不用寫石景,編譯器會幫忙寫好
as? 最終轉(zhuǎn)化成的是一個(gè)可選類型
as! 最終轉(zhuǎn)化成的是一個(gè)確定的類型
22.閉包 記住固定格式 (參數(shù)列表) -> (返回值類型)
解決循環(huán)引用的方法
對上面的方式簡化寫法
23.dealloc 方法 在swift中是deinit方法
24.如果閉包作為方法的最后一個(gè)參數(shù),那么可以吧方法的最后小括號刪除。這就叫尾隨閉包