舉兩個例子 一個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
** 總結 **
- initialize 在相同的類的時候只初始化一次,如果有繼承類,還會調(diào)用一次。2.我們應該只是初始化一些 固定的值