在程序运行过程中,创建多个类对象,只会调用一次initialize [ɪˈnɪʃəˌlaɪz] 。而创建几个类对象就会调用几次init;
创建一个类aa,分别重写 initialize和init方法
#import "aa.h" @implementation aa + (void)initialize{ NSLog(@"%s",__func__); } - (instancetype)init{ self = [super init]; if (self) { NSLog(@"%s",__func__); } return self; } @end
在viewcontrller里创建两个aa类的对象
#import "ViewController.h" #import "aa.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; aa *a1 = [[aa alloc]init]; aa *a2 = [[aa alloc]init]; } @end
打印结果是:
结论:在程序运行过程中,创建多个类对象,只会调用一次initialize。而创建几个类对象就会调用几次init;
创建一个类bb 继承自aa类
#import "aa.h" @interface bb : aa @end
在ViewController里创建两个bb类对象
#import "ViewController.h" #import "bb. @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; bb *b1 = [[bb alloc]init]; bb *b2 = [[bb alloc]init]; } @end
打印结果:
结论:如果是子类的话,创建几次实例,initialize和init就会被调用几次