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);

}

runtime方法交换原理_第1张图片

你可能感兴趣的:(runtime方法交换原理)