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(代码片

Swift基础-init详解

iOS之深入解析类方法+load与+initialize的底层原理

iOS Load方法 和 initialize方法的比较

错误分析init_sys_streams: can't initialize sys standard streams

iOS开发-类的加载load函数和initialize函数