Swift中类的定义与上一篇中结构体定义类似,但编译器并没有为类自动生成可以传入成员值的初始化器
class Test { var x: Int = 1 var y: Int = 1 }
如果类的所有成员都在定义的时候指定了初始值,编译器会为类无参的初始化器
引用赋值给var、let或者给函数传参,是将内存地址拷贝一份,属于浅拷贝
var test = Test() var test4 = test print(Mems.ptr(ofRef: test)) print(Mems.ptr(ofRef: test4)) //test地址 0x000060000282db40 //test4地址 0x000060000282db40
对象的堆空间申请过程:
在Swift中,创建类的实例对象,要向堆空间申请内存,大概流程如下:
Class._allocating_init()
libswiftCore.dylib:_swift_allocObject_
libswiftCore.dylib:swift_slowAlloc
libsystem_mallov.dylib:malloc