西贝了爷  

在程序运行过程中,创建多个类对象,只会调用一次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就会被调用几次

 

posted on 2016-06-16 17:28  西贝了爷  阅读(1164)  评论(0编辑  收藏  举报