NS_DESIGNATED_INITIALIZER 上面这个宏就是指定初始化器, 通常是参数最多的那个初始化方法. 子类如果有指定初始化函数,那么指定初始化函数实现时必须调用它的直接父类的指定初始化函数。 如果子类有指定初始化函数,那么便利初始化函数必须调用自己的其它初始化函数(包括指定初始化函数以及其他的便利初始化函数),不能调用super的初始化函数。