初始化器

初始化器用于初始化对象实例或类型

对象初始化器: -(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(后置调用)

你可能感兴趣的:(初始化器)