iOS: 聊聊 Designated Initializer(指定初始化函数)
一、iOS的对象创建和初始化
iOS 中对象创建是分两步完成:
- 分配内存
- 初始化对象的成员变量
我们最熟悉的创建NSObject对象的过程:
苹果官方有一副图片更生动的描述了这个过程:
对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等。例如对于如下对象:
1 @interface ViewController : UIViewController 2 3 @end 4 5 6 @interface ViewController () { 7 XXService *_service; 8 } 9 10 @end 11 12 @implementation ViewController 13 14 - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 15 { 16 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 17 if (self) { 18 _service = [[XXService alloc] init]; 19 } 20 21 return self; 22 } 23 24 - (void)viewWillAppear:(BOOL)animated 25 { 26 [super viewWillAppear:animated]; 27 28 [_service doRequest]; 29 } 30 31 ... 32 33 @end