Lazy Instantiation即被动初始化,当需要用到某个property时,再在此property的getters中进行初始化,例如
- (Foo *)aFoo { if (!_aFoo) { _aFoo = [[Foo alloc] init]; } return _aFoo; }
Designated Initailization即指定初始化方法,一般为默认初始化(init),有时候会自己定义指定初始化方法,这时必须重写默认初始化init返回nil,以防止初始化失败,并在自定义初始化方法中调用[super init],如下
- (id)initWithCount:(NSUInteger)count { self = [super init]; if (self) { //... }
return self; }