"便利構造函數:自己不創(chuàng)建對象
1、作用:判斷參數條件是否合法
2、傳遞‘常用/重要參數’
3落塑、只有便利的構造函數才返回nil
4纽疟、‘指定’的構造函數不允許返回nil,必須返回一個對象
5憾赁、‘指定構造函數’污朽,默認的都是,除了convenience修飾的
6龙考、只有便利構造函數可以調用self.init
7蟆肆、子類只能繼承父類的指定構造函數,便利構造函數是本類的
"析構函數,類似于oc中的dealloc晦款。對象被釋放之前調用炎功,可以用于釋放資源,deinit開頭
例子:在某個類中開啟一個時鐘缓溅,可以在析構函數中停止
1蛇损、沒有func
2、沒有()
3坛怪、不能被重載
4淤齐、不能直接被調用,被自動調用
"懶加載"袜匿,是一個閉包更啄,閉包只會執(zhí)行一次
'lazy var dataList:[String] = {
'}()
1、dataList能夠存儲字符串數組
2居灯、當調用dataList的時候祭务,如果沒有值,會執(zhí)行后面的閉包
3怪嫌、結果會保存在dataList中
4义锥、lazy的用處:如果沒有l(wèi)azy,視圖控制器一旦被創(chuàng)建岩灭,dataList就會被初始化
5缨该、簡單寫法:'lazy var dataList:[String] = ["張三","李四"]
"setter"
1、在didSet的時候川背,如果小心可以直接解包
"只讀屬性-‘計算型屬性贰拿,本身不會占用存儲空間’,根據條件計算出來的熄云,不允許修改
'var title:String? {
return "簡略寫法膨更,直接return就好了,get only的屬性"
'}
get only的完整寫法
'var title:String? {
get {
return "完整寫法缴允,直接return就好了荚守,get only的屬性,只有get"
}
'}
"閉包的循環(huán)引用
1珍德、閉包是準備好的代碼,必須要使用self
"閉包的循環(huán)引用解決方式:
1矗漾、仿照oc解決? weak var weakSelf = self
2锈候、swift中有特殊的寫法 [weak self]
[weak self] 和 __weak typeof(self) 作用類似? -> 對象被回收是 內存地址會自動指向nil? 更加安全 推薦使用這種方式
3、[unowned self] 不安全敞贡,會記錄self的地址(地址是始終存在的泵琳,但是不會做強引用,一旦self真的釋放了誊役,程序會崩潰),容易造成野指針訪問获列,[unowned self] 和 __unsafe__retained作用類似? -> 對象被回收是 內存地址不會自動指向nil 會造成野指針訪問。特點:對象被釋放蛔垢,地址仍存在
oc中網絡訪問
nonnull? "!" 不能為空
nullable? "?" 可選項
"Swift的json反序列化
"重寫:覆蓋了父類的方法
"重載構造函數:函數名相同击孩,參數不同
如果沒有實現(xiàn)init()構造函數,一旦實現(xiàn)了其他的構造函數鹏漆,默認的init()構造函數將無法被訪問