NS_UNAVAILABLE 和 NS_EDSIGNATED_INITIALIZER

下面就来跟大家解释一下这两个字段的具体作用:

NS_UNAVAILABLE

NS_UNAVAILABLE的作用是直接禁止此方法的使用,一般常见用法如下:

+(instancetype)new NS_UNAVAILABLE;

+(instancetype)init NS_UNAVAILABLE;

这样就不能直接使用这两种创建实例的方法,而需要使用开源库自定义的初始化方法,从而确保了创建实例的统一性

NS_EDSIGNATED_INITIALIZER

NS_EDSIGNATED_INITIALIZER的作用是指定构造器,通常来说指定初始化函数对一个类来说非常重要,参数也会比较多,为了适应不同的初始化需求就有了便利初始化函数。

-(instancetype)initWithName:(NSString*)name NS_EDSIGNATED_INITIALIZER;

声明指定构造器函数的一个目的是帮助规范代码,找到程序中潜在问题。

在Objective-C中,指定初始化函数的使用有一些规范:

子类如果有指定初始化函数,那么指定初始化函数实现时必须调用它的直接父类的指定初始化函数

如果子类有指定初始化函数,那么便利初始化函数必须调用自己的其他初始化函数,不能调用super的初始化函数。

链接:https://www.jianshu.com/p/a4276413e34d

你可能感兴趣的:(NS_UNAVAILABLE 和 NS_EDSIGNATED_INITIALIZER)