类 结构体的一些区别

1.类是引用类型 在堆空间 结构体是值类型 在栈空间
2.类有反初始化器 结构体没有
3.下标的返回值是类类型的时候 不用写set方法  返回值是结构体类型的时候 要写set方法
4.类可以用static class来修饰类型属性 类型方法 结构体只能使用static来修饰
5.类的内存大小 是 8个字节的类型信息 + 8个字节的引用计数 + 成员变量
类型信息里面存放的是函数地址  必须是16的倍数
结构体是 成员变量的个数 * 成员变量占有的字节数 是8的倍数
6.结构体是深拷贝 相当于拷贝出来一个副本 改变之后 对原先的值不会有影响
类是浅拷贝  相当于多了一个引用计数 对原先的值有影响
7.因为结构体在栈内 能直接找到函数地址 
而类的函数地址存放在类型信息内 相对而言 寻找的速度稍慢
8.类有继承 可以重写 结构体无法继承 
9.初始化器 对于结构体 编译器会生成多种初始化器 (如果自己没有写初始化器的话 如果写了 编译器就不会自动生成了) 对于类而言 编译器只会生成init这种编译器 (如果自己没有写初始化器的话 如果写了 编译器就不会自动生成了)
10.结构体无法跟OC桥接 类可以桥接

第三条暂定

你可能感兴趣的:(类 结构体的一些区别)