1.类:成员变量 + 功能属性,方法
结构体如果用类的定义,成员是不能修改的 ****
类是let类型
init
self
创建对象:定义变量,在堆上分配空间
2.看强引用的个数,如果>0,则对象不会被销毁
weak 定义类型为可选(optional)类型
static定义变量,用类名调用
类方法用class定义,用类名调用
3.结构体和类的区别:
1). 结构体不赋给初值可以,但类却是不可以
2). 用let定义的结构体变量,成员不能修改
3). 结构体是值类型的,在赋值的时候会发生复制
4). 类是引用类型
5). 结构体的成员方法需要加mutating才能修改成员变量
6). 类的默认构造函数没有参数
4.函数/方法
当一个类没有创建构造函数时,编译器自动生成一个无参构造函数;一旦创建自定义构造函数,编译器将不会再自动生成无参构造函数
5.var dog = Dog(kind: "大黄狗", weight: 30) //创建对象,在堆上分配空间
var dog1 = dog //如果是结构体,变成两个不同的值
6.strong/weak
1).强引用,当一个的强引用个数大于0时,对象不会被销毁
2).变量默认都是strong类型
7.构造函数:init ,
析构函数:deinit,对象被销毁
- var dog = Dog()
var dog01 = dog //建立dog01与Dog()的联系,通过dog联系
dog.name = "藏獒" //这一步就不要再定义变量字符了,dog01与dog是平等关系,会掩盖前一步的赋值
dog01.name = "京巴"
print(dog01.name,dog.name) // 京巴 京巴