NSObject+ImpChangeTool.m 824 B

12345678910111213141516171819
  1. //
  2. // NSObject+ImpChangeTool.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2023/11/7.
  6. //
  7. #import "NSObject+ImpChangeTool.h"
  8. #import <objc/runtime.h>
  9. @implementation NSObject (ImpChangeTool)
  10. + (void)SwizzlingMethod:(NSString *)systemMethodString systemClassString:(NSString *)systemClassString toSafeMethodString:(NSString *)safeMethodString targetClassString:(NSString *)targetClassString{
  11. //获取系统方法IMP
  12. Method sysMethod = class_getInstanceMethod(NSClassFromString(systemClassString), NSSelectorFromString(systemMethodString));
  13. //自定义方法的IMP
  14. Method safeMethod = class_getInstanceMethod(NSClassFromString(targetClassString), NSSelectorFromString(safeMethodString));
  15. //IMP相互交换,方法的实现也就互相交换了
  16. method_exchangeImplementations(safeMethod,sysMethod);
  17. }
  18. @end