123456789101112131415161718192021222324252627282930313233343536373839 |
- //
- // 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
|