美文网首页
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