在iOS开发中,系统的初始化方法经常不能满足我们的需要,这时我们就需要自定义一些初始化方法来满足项目需求。但是当别人使用这些类时,有时并不知道需要使用这些自定义的初始化方法,而继续使用系统的如init之类的方法,会导致这个类不能按照预期的目的进行初始化,从而导致一些错误的出现。但是OC并没有指定初始化方法这个功能,该如何避免此类情况的发生呢?
虽然OC并没有这一特性,但万能的Xcode可以,我们可以通过编译器声明,来达到这一目的。
//指定系统初始化方法不可用并附上一些提示
- (instancetype)init __attribute__((unavailable("此处可以写一些编辑错误提示")));
//指定自定义的初始化方法
- (instancetype)initWithSomething:(id)something NS_DESIGNATED_INITIALIZER;
利用编译器的特性,可以弥补语言上的缺陷,苹果为开发者考虑的真很周到啊。