initialize方法和init区别详解

    xiaoxiao2021-03-25  108

    [置顶] initialize方法和init区别详解

     分类: IOS开发 2015-08-22 11:31 205人阅读 评论(0) 收藏 举报

     

     原创帖子,转载请注明出处:http://blog.csdn.net/sbvfhp/article/details/47857851

     

     1、定义Father

     

     [objc] view plaincopy

     //

     //  Father.m

     //

     //  Created by 李建 on 15/8/22.

     //  Copyright (c) 2015 李建. All rights reserved.

     //

     

    #import "Father.h"

     

    @implementation Father

    +(void)initialize

    {

        NSLog(@"Father中的 initialize 方法执行");

    }

    -(Father *)init

    {

        NSLog(@"Father中的 init 方法执行");

        return [super init];

    }

    @end

     

     

     

     实例化后运行效果如下图:

     

     

     

     上图可以看出,Father实例化三次,initialize方法执行一次,init方法会被执行三次

     

     

     2、我们定义Son类,继承Father

     

     [objc] view plaincopy

     //

     //  Son.h

     //

     //  Created by 李建 on 15/8/22.

     //  Copyright (c) 2015 李建. All rights reserved.

     //

     

    #import "Father.h"

     

    @interface Son : Father

    @end

     

     实例化后运行效果如下:

     

     

     

     从以上图中可以看出,

     1>Father类实例化3次,initialize执行一次,init执行3

     2>Son继承自Father,Son实例化一次的时候,其它父类中的initialize执行一次,init方法执行一次

     

     

     3、我们针对Father类中的打印信息做一个调整

     

     

     

     接下来我们再看看运行效果

     

     

     

     initialize不是init

     在程序运行过程中,它会在你程序中每个类调用一次initialize。这个调用的时间发生在你的类接收到消息之前,但是在它的父类接收到initialize之后。

    转载请注明原文地址: https://ju.6miu.com/read-19945.html

    最新回复(0)