load初始化方法<加載到內(nèi)存就會執(zhí)行,不需要觸發(fā),且只會調(diào)用一次>
+ (void)load
只要加載內(nèi)存中就會調(diào)用厅克,如果沒有觸發(fā)該事件也會調(diào)用。
在main函數(shù)之前調(diào)用
ViewController.h //父類
+ (void)load{
NSLog(@"load父類");
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NestViewController *nest =[[NestViewController alloc]init];
[self.navigationController pushViewController:nest animated:YES];
}
NestViewController 繼承自 ViewController //子類
+ (void)load{
NSLog(@"load_____子類______");
}
打印結(jié)果:
類的初始化方法<創(chuàng)建對象才會執(zhí)行,需要觸發(fā)才會執(zhí)行,且只會調(diào)用一次>
+ (void)initialize
1.函數(shù)并不會每次創(chuàng)建對象都調(diào)用橙依,只有這個類第一次創(chuàng)建對象時才會調(diào)用证舟。
2.只有創(chuàng)建對象才會被調(diào)用硕旗,而且只會調(diào)用一次,如果子類重寫了該方法褪储,當(dāng)子類創(chuàng)建的時候也只會調(diào)用一次卵渴,如果子類沒有實現(xiàn)該用法慧域,則會調(diào)用父類中的該方法鲤竹。
在main函數(shù)之后調(diào)用
ViewController.h //父類
+ (void)initialize{
NSLog(@"父類 initialize ");
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NestViewController *nest =[[NestViewController alloc]init];
[self.navigationController pushViewController:nest animated:YES];
}
NestViewController 繼承自 ViewController //子類
//如果子類沒有實現(xiàn)該方法,則會調(diào)用父類中的該方法昔榴,
+ (void)initialize{
NSLog(@"子類 initialize ");
}
打印