NSObject+SXRuntime.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // NSObject+SXRuntime.h
  3. // UINavigation-SXFixSpace
  4. //
  5. // Created by charles on 2017/9/8.
  6. // Copyright © 2017年 None. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <objc/runtime.h>
  10. @interface NSObject (SXRuntime)
  11. /**
  12. swizzle 类方法
  13. @param oriSel 原有的方法
  14. @param swiSel swizzle的方法
  15. */
  16. + (void)swizzleClassMethodWithOriginSel:(SEL)oriSel swizzledSel:(SEL)swiSel;
  17. /**
  18. swizzle 实例方法
  19. @param oriSel 原有的方法
  20. @param swiSel swizzle的方法
  21. */
  22. + (void)swizzleInstanceMethodWithOriginSel:(SEL)oriSel swizzledSel:(SEL)swiSel;
  23. /**
  24. 判断方法是否在子类里override了
  25. @param cls 传入要判断的Class
  26. @param sel 传入要判断的Selector
  27. @return 返回判断是否被重载的结果
  28. */
  29. - (BOOL)isMethodOverride:(Class)cls selector:(SEL)sel;
  30. /**
  31. 判断当前类是否在主bundle里
  32. @param cls 出入类
  33. @return 返回判断结果
  34. */
  35. + (BOOL)isMainBundleClass:(Class)cls;
  36. /**
  37. 动态创建绑定selector的类
  38. tip:每当无法找到selectorcrash转发过来的所有selector都会追加到当前Class上
  39. @param aSelector 传入selector
  40. @return 返回创建的类
  41. */
  42. + (Class)addMethodToStubClass:(SEL)aSelector;
  43. @end