initialize和load

/**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----
相关文章
相关标签/搜索