GeekBand OC 5. 初始化器与析构器

初始化器(初始化)

对象初始化器:-(id)

类型初始化器:+(void)

析构器(释放)

对象析构器:-(void)dealloc

对象初始化器

1. init和alloc(类方法)搭配使用

alloc:分配内存-》将内存置零(0,NULL)

init可能返回与对象不同的指针,因此应该嵌套使用[[alloc]init]

-(id)init 默认初始化器

自定义:

1. 先调用父类初始化器self=[super init];

2. if(self){初始化实例变量 "_abc"(copy是为了创造一个新的对象)}

3. return self;

较为简单的初始化器(便捷)一般调用最复杂的初始化器(指定)

2. new = alloc+init

new不能传递参数

类型初始化器

+(void)initialize

自动调用父类初始化器

if(self == [Book class])判断是否为Book类

出现类之前会先调用类初始化器

析构器

-(void)dealloc

释放对象的动态资源

dealloc功能:

(自动)对对象属性引用计数减持(-1)

(手动)malloc的内存要在dealloc里手工释放free();

(手动)关闭非内存资源

(自动)调用父类dealloc

dealloc在释放内存前自动调用

你可能感兴趣的:(GeekBand OC 5. 初始化器与析构器)