86,类的启动过程——load,initialize

#import


@interface Person : NSObject

+(void)load;

+(void)initialize;

@end


@implementation Person


/*

 只要程序一启动就会将所有的类代码夹在到内存中,放入代码区

 load方法会在当前类被加载到内存的时候调用,有且仅会调用一次

 如果存在继承关系,那么,程序会先调用父类的load方法,再调用子类的load方法

 */

+(void)load{

    NSLog(@"Person->Load");

}


/*

 当前类第一次被使用的时候就会调用(创建类对象的时候)

 initialize方法在整个程序的运行过程中,只会被调用一次,无论你使用多少次这个类都被调用依次

 用于属性的初始化

 如果存在继承关系,那么,程序会先调用父类的initialize方法,再调用子类的initialize方法

 */

+(void)initialize{

    NSLog(@"Person->initialize");

}


@end


@interface Student : Person


+(void)load;

+(void)initialize;


@end


@implementation Student


+(void)load{

    NSLog(@"Student->Load");

}


+(void)initialize{

    NSLog(@"Student->initialize");

}


@end


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        Student *student = [Student new];

        Student *student1 = [Student new];

        Student *student2 = [Student new];

        

    }

    return 0;

}


//2015-12-12 11:45:27.754 9,类的启动过程[1453:87764] Person->Load

//2015-12-12 11:45:27.755 9,类的启动过程[1453:87764] Student->Load

//2015-12-12 11:45:27.755 9,类的启动过程[1453:87764] Person->initialize

//2015-12-12 11:45:27.755 9,类的启动过程[1453:87764] Student->initialize

//Program ended with exit code: 0

你可能感兴趣的:(OC)