1.類:成員變量 + 功能屬性漂问,方法
結構體如果用類的定義赖瞒,成員是不能修改的 ****
類是let類型
init
self
創(chuàng)建對象:定義變量,在堆上分配空間
2.看強引用的個數蚤假,如果>0栏饮,則對象不會被銷毀
weak 定義類型為可選(optional)類型
static定義變量,用類名調用
類方法用class定義磷仰,用類名調用
3.結構體和類的區(qū)別:
1). 結構體不賦給初值可以袍嬉,但類卻是不可以
2). 用let定義的結構體變量,成員不能修改
3). 結構體是值類型的,在賦值的時候會發(fā)生復制
4). 類是引用類型
5). 結構體的成員方法需要加mutating才能修改成員變量
6). 類的默認構造函數沒有參數
4.函數/方法
當一個類沒有創(chuàng)建構造函數時伺通,編譯器自動生成一個無參構造函數箍土;一旦創(chuàng)建自定義構造函數,編譯器將不會再自動生成無參構造函數
5.var dog = Dog(kind: "大黃狗", weight: 30) //創(chuàng)建對象罐监,在堆上分配空間
var dog1 = dog //如果是結構體吴藻,變成兩個不同的值
6.strong/weak
1).強引用,當一個的強引用個數大于0時弓柱,對象不會被銷毀
2).變量默認都是strong類型
7.構造函數:init 沟堡,
析構函數:deinit,對象被銷毀
- var dog = Dog()
var dog01 = dog //建立dog01與Dog()的聯(lián)系矢空,通過dog聯(lián)系
dog.name = "藏獒" //這一步就不要再定義變量字符了航罗,dog01與dog是平等關系,會掩蓋前一步的賦值
dog01.name = "京巴"
print(dog01.name,dog.name) // 京巴 京巴