“(value)” 這種方式轉(zhuǎn)化為自字符串進(jìn)行輸出
swift 中的字典和數(shù)組都是范型的, var arr = [string] 吮蛹,string類型的數(shù)組瞳别,var arr = [AnyObject] 存儲的數(shù)據(jù)還沒有確定。
dict 是字典實現(xiàn)簡單的復(fù)制县昂,可以看到類型的不可以亂來替換的邢疙,除非我們使用的是any棍弄,或者anyObject望薄。
extension 類名 {
在其中加入擴展的方法:
}
swift 的接口
(但是方法沒有實現(xiàn))
類中要“繼承”這個接口的同時還要實現(xiàn)接口的方法呼畸,也就是類繼承了接口之后痕支,就必須實現(xiàn)方法。
swift的命名空間
swift中控件和類的綁定
viewcontroller的類和storyBoard進(jìn)行綁定的時候卧须,我們是必須寫一個初始化的方法,decoder也就是編碼的方法儒陨,這樣我們就能夠?qū)崿F(xiàn)了相關(guān)的代碼的編寫花嘶。
swift中的便利構(gòu)造器和構(gòu)造器鏈
【swift面向?qū)ο蟾呒?—— 類的構(gòu)造和析構(gòu)】
類的構(gòu)造器
兩段式構(gòu)造
構(gòu)造器的繼承和重寫
可能失敗的構(gòu)造器的傳播
析構(gòu)器
【類的指定構(gòu)造器和便利構(gòu)造器】
1、一個類中至少有一個指定構(gòu)造器蹦漠,其必須負(fù)責(zé)初始化類中所有的實例存儲屬性椭员。
2、便利構(gòu)造器屬于次要的笛园、輔助性的構(gòu)造器
3隘击、類中可以不定義便利構(gòu)造器,便利構(gòu)造器必須調(diào)用同一個類中的其他構(gòu)造器完成初始化
4喘沿、便利構(gòu)造器的語法格式: convenience init(){}
只有類中才有“便利構(gòu)造器”這個歹念闸度。
有可能在枚舉以及狗仔上有構(gòu)造方法竭贩,但是蚜印,便利構(gòu)造器只有在類中才會有的。
便利構(gòu)造器其顧名思義就是構(gòu)造更加便利的構(gòu)造器留量,但是窄赋,最終到鏈的盡頭都是可以進(jìn)行指定構(gòu)造器。
【類的構(gòu)造器鏈】
swift對構(gòu)造器之間的調(diào)用鏈指定了如下規(guī)則:
1楼熄、子類構(gòu)造器必須調(diào)用直接分類的指定構(gòu)造器(如果有父類)
2忆绰、便利構(gòu)造器必須調(diào)用同一個類中的其他構(gòu)造器;
3可岂、便利構(gòu)造器調(diào)用的構(gòu)造器鏈的最終節(jié)點必須是指定構(gòu)造器错敢。
簡化記憶:
1) 指定構(gòu)造器總是向上代理(調(diào)用父類構(gòu)造器);
2)便利構(gòu)造器總是必須橫向代理(調(diào)用當(dāng)前的其他構(gòu)造器)
swift中類的兩段式構(gòu)造(上)
類的構(gòu)造需要兩個階段
第二階段:
1缕粹、沿著繼承樹往下稚茅,構(gòu)造器此時可以修改實例屬性、訪問self平斩,甚至可以調(diào)用實例方法亚享;
2、最后绘面,構(gòu)造器鏈中的便利構(gòu)造器都有機會定制實例和使用self欺税。
安全檢查
這里是和c++是有區(qū)別的侈沪,也就是c++可以直接從上面的父類進(jìn)行往下進(jìn)行調(diào)用,但是swift中是先從下到上晚凿,然后再從上到下亭罪。
安全檢查3
下面的類繼承和方法重寫
構(gòu)造器的重寫
1、子類構(gòu)造器重寫了父類的指定構(gòu)造器晃虫,必須添加override修飾符
2皆撩、子類中定義的構(gòu)造器只是與父類中遍歷構(gòu)造器的形參列表、外部形參名相同哲银,不算重寫扛吞。
類與可能失敗的構(gòu)造器
類中的構(gòu)造器是不能夠調(diào)用,需要強制析構(gòu)的構(gòu)造器荆责,可以調(diào)用不需要強制解析的構(gòu)造器(也就是帶有問號的"?")
析構(gòu)函數(shù)和c++中的析構(gòu)函數(shù)是一樣的(同樣是由系統(tǒng)自動調(diào)用)
swift 中擴展添加屬性和方法【extension】
wiliest didSet 相關(guān)的方法 get 和set 之間的計算屬性對和屬性值觀察器
books.retainAll() 這個方法是尾隨閉包滥比,
通過擴展添加的構(gòu)造器并沒有影響類型本來的構(gòu)造器,
swift中的協(xié)議(接口) 和oc中的協(xié)議是一樣的
Swift 中類和結(jié)構(gòu)體有很多共同點做院。共同處在于:定義屬性用于存儲值盲泛、定義方法用于提供功能、定義附屬腳本用于訪問值键耕、定義構(gòu)造器用于生成初始化值寺滚、通過擴展以增加默認(rèn)實現(xiàn)的功能、符合協(xié)議以對某類提供標(biāo)準(zhǔn)功能屈雄。與結(jié)構(gòu)體相比村视,類還有如下的附加功能:繼承允許一個類繼承另一個類的特征、類型轉(zhuǎn)換允許在運行時檢查和解釋一個類實例的類型酒奶、解構(gòu)器允許一個類實例釋放任何其所被分配的資源蚁孔、引用計數(shù)允許對一個類的多次引用。
結(jié)構(gòu)體應(yīng)該是不可以繼承的惋嚎,因為結(jié)構(gòu)體是可以進(jìn)行相關(guān)的內(nèi)容的值進(jìn)行了一次拷貝來進(jìn)行實現(xiàn)的杠氢。
swift中是繼承的,協(xié)議上是多繼承的另伍,也就是彌補了類的但繼承的缺陷
protocol
結(jié)構(gòu)體和枚舉類型(值類型)都是可以使用static關(guān)鍵字進(jìn)行修飾的
(協(xié)議的定義和實現(xiàn)鼻百,協(xié)議中的注意的是:協(xié)議的定義類類型的屬性,在實現(xiàn)中是使用class還是使用static摆尝,這個要看具體的情況而定)
swift 通過try catch 處理抓獲異常
do{
let dict :[String:AnyObject] = try NSJSONSerialization.JSONObjectWithData(restData!, options: .MutableContainers) as! Dictionary
print("dict is \(dict)")
}catch{ }