int main(int argc, char * argv[]) {
NSLog(@"%s:1",__func__);//第一个监测点
@autoreleasepool {
NSLog(@"%s:2",__func__);//第二个监测点
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
#import "Person.h"
@implementation Person
+(void)load{
NSLog(@"%s",__func__);
}
+(void)initialize{
NSLog(@"%s",__func__);
}
-(instancetype )init{
if (self = [super init]) {
NSLog(@"%s",__func__);
}
return self;
}
@end
执行代码
Person *person1 = [[Person alloc] init];
self.person1 = person1;
Person *person2 = [[Person alloc] init];
self.person2 = person2;
执行结果:
[1163:402998] +[Person load]
[1163:402998] main:1
[1163:402998] main:2
[1163:402998] +[Person initialize]
[1163:402998] -[Person init]
[1163:402998] -[Person init]
结果说明:
load方法 在程序启动前初始化执行一次,且只执行一次
initialize方法 在init前初始化执行一次,且只执行一次
init 为实例方法显而易见最后执行