项目结构日益复杂,在启动时需配置的内容也越来越多.所以分离AppDelegate中文件内容很有必要.
新建一个类文件 startApp.h
调用类方法 load()
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[[self class]setUpSomething];
});
}
+ (void)setUpSomething{
NSLog(@"i can do everything");
}
接下来只需要在AppDelegate里导入startApp.h头文件, 不需要其他操作,就可以很好的分离出代码.
原理:
当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息.
load 方法还是非常的神奇的, 因为它会在每一个类甚至分类被引入时仅调用一次, 调用的顺序是父类优先于子类, 子类优先于分类.
而且 load 方法不会被类自动继承, 每一个类中的 load 方法都不需要像 viewDidLoad 方法一样调用父类的方法。