繼承和⿔⽑的 initializer

Presenter : Peter Pan

  1. self.age & age 的差別: 要讓程式知道是參數的age,還是物件屬性的age
  2. 設計原則:確保有東西
原則⼀ : 屬性的初始,必須在當初宣告屬性的類別裡進⾏。
原則⼆ : ⼦類別得先完成⾃⼰屬性的初始後,才能進⾏⽗類別 屬性的初始。

convenience initializer:方便我們用較少的參數,產生物件

initializer的繼承

情況⼀ : 若⼦類別沒有定義任何 designated initializer,它將繼承⽗類別的 designated initializer。
情況⼆ : 如果滿⾜情況⼀,或⼦類別覆寫了⽗類別所有的 designated initializer,它 將繼承⽗類別的 convenience initializer。

required initializer : 防⽌initializer失傳

實例:物件編碼 & 解編碼

補充:

APP更新,之前存的資料 & UserDefault不會重置,除非把APP刪掉重裝

如果APP資料結構改變,不需讓使用者把APP刪掉重裝的話,可以用迴圈把物件1讀出,轉存成物件2。

找到UI物件UITableView dynamic cell上的哪一個位置

var cell = sender.superview
while cell is UITableViewCell == false {
cell = cell?.superview
}
let targetCell = cell as! UITableViewCell
let indexPath = self.tableView.indexPath(for: targetCell)