美文网首页牛叉的demoiOS开发你需要知道的HTML5 专栏
iOS 面试题~类方法load和initialize的区别

iOS 面试题~类方法load和initialize的区别

作者: 石虎132 | 来源:发表于2017-10-31 13:59 被阅读141次

    //联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄

    一、+load:

    1/方法当类或分类添加到object-c runtime时被调用

    2/子类的+load方法会在它所有父类的+load方法之后执行,

    3/而分类的+load方法会在它的主类的+load方法之后执行,

    4.+load方法,它不遵循那套继承规则。

    5.+load方法调用顺序是:SuperClass -->SubClass --> CategaryClass。

    6.load,是加载类的时候,这里是Constants类,就会调用。也就是说,ios应用启动的时候,就会加载所有的类,就会调用这个方法。

    注意:这样有个缺点,当加载类需要很昂贵的资源,或者比较耗时的时候,可能造成不良的用户体验,或者系统的抖动(dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{});用GCD可能会好点)。

    二、initialize

    1/是在类或者它的子类接受第一条消息前被调用;

    2/是以懒加载的方式被调用的;

    3/一定会在“线程安全的环境”中执行;

    4/调用顺序是SuperClass -->SubClass。

    5/initialize会在运行时仅被触发一次,如果没有向类发送消息的话,这个方法将不会被调用。这个方法的调用是线程安全的。父类会比子类先收到此消息。

    谢谢!!!

    相关文章

      网友评论

        本文标题:iOS 面试题~类方法load和initialize的区别

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