美文网首页
Ios-细节二:理解`NS_DESIGNATED_INITIAL

Ios-细节二:理解`NS_DESIGNATED_INITIAL

作者: 随偑侕荇 | 来源:发表于2017-02-23 02:05 被阅读319次

NS_DESIGNATED_INITIALIZER(指定初始化器)。
在OC中,对于多个方法实现初始化的时候,会指定其中一个做为NS_DESIGNATED_INITIALIZER,其于的初始化方法(简称Secondary initializers(次要初始化器))会调用指定初始化器来实现对象的创建。

比如:OC中UIView

在AFNetworking中父类AFURLSessionManager.h 和 子类AFHTTPSessionManager.h

注:一般的时候创建类的会选择创建一个接口实现对象的创建。但有时会创建多个初始化器,这时候可以
    使用指定初始化器实现。在类中创建一个单列,又有多个初始化器,可以采用此方法。(个人看法)

类在创建的时候遵循的原则:

正确编写Designated Initializer的几个原则

  • 每个类的正确初始化过程应当是按照从子类到父类的顺序,依次调用每个类的Designated Initializer。并且用父类的Designated Initializer初始化一个子类对象,也需要遵从这个过程。
  • 如果子类指定了新的初始化器,那么在这个初始化器内部必须调用父类的Designated Initializer。并且需要重写父类的Designated Initializer,将其指向子类新的初始化器
废话不多说,上代码:

gitHub上相关代码:https://github.com/suifengerxing/Ios-Encapsulation-of-knowledge

父类:Person.h



Person.m



子类:Student.h

Student.m

运行结果:
main


参考博客:
正确使用NS_DESIGNATED_INITIALIZER

相关文章

网友评论

      本文标题:Ios-细节二:理解`NS_DESIGNATED_INITIAL

      本文链接:https://www.haomeiwen.com/subject/qnevwttx.html