美文网首页
load && initialize

load && initialize

作者: 愤怒小鸟飞呀飞 | 来源:发表于2019-05-14 10:57 被阅读0次
  • 两者都有
    父类收到这条消息早于子类
  • +initialize
    1、一个类只能调用一次(如下代码,类别实现+initialize,本类+initialize方法将不在调用)
@implementation Person (Run)

+(void)load{
    NSLog(@"Person (Run) load");
}

+(void)initialize{
    NSLog(@"Person (Run) initialize");
}


@end

2、不调用类的方法将不会调用
3、+initialize方法可能被调用不止一次
比如:子类未实现initialize方法,父类+initialize方法将调用两次
4、第一次使用类的时候才会调用
5、用线程安全的方式调用
6、父类调用早于子类

  • +load
    1、app启动,类或者类别被加载到运行时的时候调用
    2、尽管你不调用类的任何方法也将调用
    3、如果在类别中实现+load,则为每个类调用一次,类别调用一次
    4、Framework classes 将在这个时候加载
    5、C++ static initializers are not loaded
    6、在main()函数调用之前调用
    7、在这里使用自动释放对象是不安全的
    8、调用顺序 父类>子类>类别

  • 使用场景

  • +load
    方法交换


    image.png
  • +initialize
    1、不要在+initialize做繁重的工作
    2、在这个方法里检查是不是本类调用自己

+(void)initialize{
    NSLog(@"Person initialize");
    if(self == [Person self]){
       NSLog(@"Person if initialize");
    }
}

相关文章

网友评论

      本文标题:load && initialize

      本文链接:https://www.haomeiwen.com/subject/xypjaqtx.html