標籤:
在程式運行過程中,建立多個類對象,只會調用一次initialize。而建立幾個類對象就會調用幾次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等方法