概述
iOS 中对象创建是分两步完成:
- 分配内存
- 初始化对象数据成员
创建NSObject对象的过程:
苹果官方有一副图片更生动的描述了这个过程:
初始化方法
c++类有构造函数,构造函数负责实例对象初始化,构造函数函数名与类名一致,易识别,且会自动调用
oc类没有构造函数,但有类似构造函数的初始化方法,初始化函数与类名不一致,且不会自动调用
oc类初始化方法特征:
- instance method
- Method返回类型为instancetype
- Method的SEL以init起始
初始化方法分类:
- 指定初始化方法:designated initializer,以NS_DESIGNATED_INITIALIZER标记
- 便利初始化方法:convenience initializer,无NS_DESIGNATED_INITIALIZER标记
#ifndef NS_DESIGNATED_INITIALIZER
#if __has_attribute(objc_designated_initializer)
#define NS_DESIGNATED_INITIALIZ