runtime方法交换原理

method_exchangeImplementations(Method m1,Method m2)

{

    if(!m1  ||  !m2)return;

    mutex_locker_t lock(runtimeLock);

    IMPm1_imp = m1->imp;

    m1->imp= m2->imp;

    m2->imp= m1_imp;

//刷新所有类、元类、子类的缓存 会很慢,比较耗时

    flushCaches(nil);

//更新方法

    updateCustomRR_AWZ(nil, m1);

    updateCustomRR_AWZ(nil, m2);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容