斗牛棋牌

斗牛棋牌

您现在的位置是:主页 > 政务新闻 >

OC中自我和超级的总结

发布时间:2019-07-02 12:26编辑:365bet真人体育浏览(494)

    OC中自我和超级的总结
    一段代码触发的想法:
    @implementationSon:爸爸
    - (Id)init
    自我=[superinit];
    是(自动){
    NSLog(@“%@”,NSStringFromClass([selfclass])); //它们是
    NSLog(@“%@”,NSStringFromClass([superclass])); //它们是
    将被退回
    @结束
    问题1:我是什么人?
    问题2:什么是超级?
    问题3:[superinit]做了什么?
    问题4:为什么我要为自己分配[superinit]的地址?
    问题5:为什么NSLog Son的输出?
    首先是响应区域。
    答案1:
    1本身是OC提供的保留字。
    2本身代表当前方法的调用者。
    3 - 在方法中,self代表“对象”。
    在4 +方法中,self代表“class”。
    5本身是方法的隐藏参数变量,它指向当前调用方法的对象。另一个隐藏参数是_cmd。这表示当前的类方法选择器。
    A2:
    1super是OC提供的保留字。
    2 super不是隐藏参数,它只是一个“编译器指标”。
    如果找到方法,则指定的方法在主类中找到一个位置。
    A3:
    1递归地将主类对象初始化为根对象。
    A4:
    在一个对象的整个过程中只有一个自我对象。没有指向主类对象的指针。
    2在自我或超级对象内部,只有一个消息体是self。换句话说,self和super指的是同一个对象。
    3如果未初始化父类,则返回nil并结束操作。
    A5:
    1见答案4;结果清楚,自我和超级是同一个实体。
    其次是怀疑的领域。
    分析:
    在面向对象的进程中,子类继承自主类,并拥有主类的所有所有权方法。完整的类初始化包括子类初始化和主类初始化。
    在两个子类[allocinit]之后,首先只存在一个对象实体。没有所谓的主要类的超级对象实体。
    在初始化过程中,主类属性和方法的初始化属于子类的某些对象。超级指针被分配给自己。这是一个错误,事实上,它们都是指对象的初始位置。
    摘要过程中引用了以下链接:
    1
    关于你自己和超级OC的问题和分析(非常有用)
    2
    自动=[superinit]学习
    3
    想想你自己=[superinit]