/**load * 当类一加载到OC运行时系统中(内存),就会调用一次 * 程序一块儿的就会调用 * 程序运行过程当中,只会调用一次 ** 若是某个类的某个方法永远都只执行一次,那就放入load方法中最合适 */ /**initialize * 当第一次使用这个类的时候才会调用 * 并不是程序一启动就会调用 */
#import "Person.h" @implementation Person + (void)load { NSLog(@"------------person load--------------"); } + (void)initialize { NSLog(@"------------person initialize--------------"); } #import "Child.h" @implementation Child + (void)load { NSLog(@"------------Child load--------------"); } + (void)initialize { NSLog(@"------------Child initialize--------------"); } #import "ViewController.h" #import "Person.h" #import "Child.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //Person *p = [[Person alloc] init]; Child *c = [[Child alloc] init]; } 输出结果 2015-07-19 17:05:59.735 test[27283:1314612] ------------person load-------- 2015-07-19 17:05:59.739 test[27283:1314612] ------------Child load---------- 2015-07-19 17:05:59.928 test[27283:1314612] ------------person initialize--- 2015-07-19 17:13:05.182 test[27396:1319499] ------------Child initialize---- ps:若是子类没有initialize方法,就会载入父类 输出结果:父类initialize重复调用 2015-07-19 17:05:59.735 test[27283:1314612] ------------person load-------- 2015-07-19 17:05:59.739 test[27283:1314612] ------------Child load---------- 2015-07-19 17:05:59.928 test[27283:1314612] ------------person initialize--- 2015-07-19 17:13:05.182 test[27396:1319499] ------------person initialize----