+ (void)initialize 理解

举两个例子 一个animal 类 ,一个它的子类 Money

** Animal 类**


@interface Animal : NSObject

@end


 @implementation Animal

- (instancetype)init
{
    self = [super init];
    if (self) {
        NSLog(@"init:%@",[self class]);
    }
    return self;
}

+ (void)initialize {
    
    [super initialize];
    NSLog(@"initialize_1_Class:%@",[self class]);
}

@end


** Monkey 类**


@interface Monkey : Animal

@end

 
@implementation Monkey

- (instancetype)init
{
    self = [super init];
    if (self) {
        NSLog(@"init:%@",[self class]);
    }
    return self;
}

+ (void)initialize {
    
    [super initialize];
    NSLog(@"initialize_2_Class:%@",[self class]);
}

@end


** 运行和 打印结果 **


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    Animal * animal1 = [[Animal alloc]init];
    
    Animal * animal2 = [[Animal alloc]init];
    
    Animal * animal3 = [[Animal alloc]init];
    
    Animal * animal4 = [[Animal alloc]init];
    
    
    Monkey * monkey1  = [[Monkey alloc]init];
    Monkey * monkey2  = [[Monkey alloc]init];
    Monkey * monkey3  = [[Monkey alloc]init];
    
}



2016-07-12 17:34:58.918 InitiazeAndLoad[5982:208086] initialize_1_Class:Animal
2016-07-12 17:34:58.918 InitiazeAndLoad[5982:208086] init:Animal
2016-07-12 17:34:58.918 InitiazeAndLoad[5982:208086] init:Animal
2016-07-12 17:34:58.918 InitiazeAndLoad[5982:208086] init:Animal
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] init:Animal
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] initialize_1_Class:Monkey
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] initialize_2_Class:Monkey
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] init:Monkey
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] init:Monkey
2016-07-12 17:34:58.919 InitiazeAndLoad[5982:208086] init:Monkey
2016-07-12 17:34:58.920 InitiazeAndLoad[5982:208086] init:Monkey
2016-07-12 17:34:58.920 InitiazeAndLoad[5982:208086] init:Monkey
2016-07-12 17:34:58.920 InitiazeAndLoad[5982:208086] init:Monkey

** 总结 **

  1. initialize 在相同的类的时候只初始化一次,如果有继承类,还会调用一次。2.我们应该只是初始化一些 固定的值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 1,199评论 0 1
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 1,487评论 2 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,403评论 0 2
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,994评论 0 9
  • javascript只支持实现继承,而且继承主要是依靠原型链来实现的。 原型链 javascript将原型链作为实...
    shanruopeng阅读 283评论 0 1

友情链接更多精彩内容