ios initialize和init等方法
Posted 西贝了爷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios initialize和init等方法相关的知识,希望对你有一定的参考价值。
在程序运行过程中,创建多个类对象,只会调用一次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就会被调用几次
以上是关于ios initialize和init等方法的主要内容,如果未能解决你的问题,请参考以下文章
Spring中Bean初始化及销毁方法(InitializingBean接口DisposableBean接口@PostConstruct注解@PreDestroy注解以及init-method(代码片
iOS之深入解析类方法+load与+initialize的底层原理