美文网首页
+(id)load iOS

+(id)load iOS

作者: NanNan | 来源:发表于2019-11-14 16:01 被阅读0次

    介绍
    load函数是只要你动态加载或者静态引用了这个类,那么load就会被执行,它并不需要你显示的去创建一个类后才会执行,同时只执行一次。

    执行顺序

    • 关于load的执行顺序问题,所有的superclass的load执行完以后才会执行该类的load,以及class中的load方法是先于category中的load执行的,因此最后加载该类的category。

    • 由于它的调用不是惰性的,且其只会在程序调用期间调用一次,最最重要的是,如果在类与分类中都实现了 load 方法,它们都会被调用,不像其它的在分类中实现的方法会被覆盖,这就使 load 方法成为了方法调剂(黑魔法)的绝佳时机。

    关于在category中load方法的执行使用,在iOS黑魔法-Method Swizzling中有很好的运用例子。

    注意

    • dyld 是 the dynamic link editor 的缩写,它是苹果的动态链接器。

    • load 可以说我们在日常开发中可以接触到的调用时间最靠前的方法,在主函数运行之前,load 方法就会调用。

    常用场景 load方法中实现Method Swizzle

    Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用。

    参考文档
    简书一
    简书二
    简书三
    iOS黑魔法一
    iOS黑魔法二

    相关文章

      网友评论

          本文标题:+(id)load iOS

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