// // NSObject+Swizzle.m // sansanMassage_Consumer // // Created by YoMi on 2022/8/11. // #import "NSObject+Swizzle.h" @implementation NSObject (Swizzle) + (void)swizzleOriginalSelector:(SEL)original swizzleSelector:(SEL)swizzle isInstanceSelector:(BOOL)isInstance { // get Method Method originalMethod = nil; Method swizzlingMethod = nil; Class class = isInstance ? [self class] : object_getClass(self); if (isInstance) { originalMethod = class_getInstanceMethod(class, original); swizzlingMethod = class_getInstanceMethod(class, swizzle); } else{ originalMethod = class_getClassMethod(class, original); swizzlingMethod = class_getClassMethod(class, swizzle); } BOOL didAddMethod = class_addMethod(class, original, method_getImplementation(swizzlingMethod), method_getTypeEncoding(swizzlingMethod)); if (didAddMethod) { class_replaceMethod(class, swizzle, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); } else { method_exchangeImplementations(originalMethod, swizzlingMethod); } } @end