+load,+initialize原理
1.load
父类的load方法在子类load方法之前调用,分类的load方法在原来类load方法之后调用,依赖类的load方法会在自己之前调用,总之所有的类的load方法都会被调用
2.initialize
initialize 子类会覆盖父类的initalize方法, 分类会覆盖被扩展类的initalize方法
如果子类未定义该方法,那么子类就会调用父类的initialize方法,所以第一次使用一个类之前,最终都会调用一个initliaze方法,无论该方法来自于自己还是原来的类,还是父类,且只调用一个initalize
存在一种情况是;多个子类都为定义initialize方法,那么父类的initialize方法可能会被调用多次哦,所以使用initialize 如果只想调用一次最好进行判断
+(void)initialize
{
if (self == [MTMetaTool self]) {
//write your code
}
}
用途: 实现单例模式