iOS: 聊聊 Designated Initializer(指定初始化函数)

 

一、iOS的对象创建和初始化

iOS 中对象创建是分两步完成:

  • 分配内存
  • 初始化对象的成员变量

我们最熟悉的创建NSObject对象的过程:

iOS: 聊聊  Designated Initializer(指定初始化函数)

苹果官方有一副图片更生动的描述了这个过程:

iOS: 聊聊  Designated Initializer(指定初始化函数)

对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等。例如对于如下对象:

 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
Test ViewController

相关文章: