Lazy Instantiation和Designated Initailization

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; }
原文地址:https://www.cnblogs.com/mystory/p/2914401.html