初始化器用于初始化对象实例或类型
对象初始化器: -(id)init 可以重载多个
类型初始化器:+(void)initialize 只能有一个
析构器用于释放对象拥有的资源,无返回值的函数
对象析构器-(void)dealloc 只能有一个
没有类型析构器
alloc是一个类方法
如何查看类库?按什么键?点击
类对象在堆上分配内存
初始化器对象实例时,init通常与alloc搭配使用
alloc所做的事情
1.在堆上分配合适大小的内存
2.将属性或实例变量的内存置0
init所做的事情
1.调用父类初始化器[super init](前置调用)
2.初始化当前对象实例变量(在初始化器内部,注意使用实例变量,不要使用属性)
拷贝属性?
new相当于调用alloc/init的无参数版本
类初始化器initialize负责类型级别的初始化
子类的initialize会自动调用父类的initialize(前置调用)
initialize在每个类使用之前被系统自动调用,且每个进程周期中,只被调用一次
对象析构器dealloc负责释放对象拥有的动态资源
1.ARC将自动对对象属性引用计数减持
2.手工释放不受ARC管理的动态内存,如maclloc分配的内存
3.手工关闭非内存资源,如文件句柄,网络端口
dealloc由ARC根据对象引用计数规则,在释放对象内存前自动调用,无法手工调用
子类的dealloc会自动调用父类的dealloc(后置调用)