NSObject+MJClass.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //
  2. // NSObject+MJClass.h
  3. // MJExtensionExample
  4. //
  5. // Created by MJ Lee on 15/8/11.
  6. // Copyright (c) 2015年 小码哥. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /**
  10. * 遍历所有类的block(父类)
  11. */
  12. typedef void (^MJClassesEnumeration)(Class c, BOOL *stop);
  13. /** 这个数组中的属性名才会进行字典和模型的转换 */
  14. typedef NSArray * (^MJAllowedPropertyNames)(void);
  15. /** 这个数组中的属性名才会进行归档 */
  16. typedef NSArray * (^MJAllowedCodingPropertyNames)(void);
  17. /** 这个数组中的属性名将会被忽略:不进行字典和模型的转换 */
  18. typedef NSArray * (^MJIgnoredPropertyNames)(void);
  19. /** 这个数组中的属性名将会被忽略:不进行归档 */
  20. typedef NSArray * (^MJIgnoredCodingPropertyNames)(void);
  21. /**
  22. * 类相关的扩展
  23. */
  24. @interface NSObject (MJClass)
  25. /**
  26. * 遍历所有的类
  27. */
  28. + (void)mj_enumerateClasses:(MJClassesEnumeration)enumeration;
  29. + (void)mj_enumerateAllClasses:(MJClassesEnumeration)enumeration;
  30. #pragma mark - 属性白名单配置
  31. /**
  32. * 这个数组中的属性名才会进行字典和模型的转换
  33. *
  34. * @param allowedPropertyNames 这个数组中的属性名才会进行字典和模型的转换
  35. */
  36. + (void)mj_setupAllowedPropertyNames:(MJAllowedPropertyNames)allowedPropertyNames;
  37. /**
  38. * 这个数组中的属性名才会进行字典和模型的转换
  39. */
  40. + (NSMutableArray *)mj_totalAllowedPropertyNames;
  41. #pragma mark - 属性黑名单配置
  42. /**
  43. * 这个数组中的属性名将会被忽略:不进行字典和模型的转换
  44. *
  45. * @param ignoredPropertyNames 这个数组中的属性名将会被忽略:不进行字典和模型的转换
  46. */
  47. + (void)mj_setupIgnoredPropertyNames:(MJIgnoredPropertyNames)ignoredPropertyNames;
  48. /**
  49. * 这个数组中的属性名将会被忽略:不进行字典和模型的转换
  50. */
  51. + (NSMutableArray *)mj_totalIgnoredPropertyNames;
  52. #pragma mark - 归档属性白名单配置
  53. /**
  54. * 这个数组中的属性名才会进行归档
  55. *
  56. * @param allowedCodingPropertyNames 这个数组中的属性名才会进行归档
  57. */
  58. + (void)mj_setupAllowedCodingPropertyNames:(MJAllowedCodingPropertyNames)allowedCodingPropertyNames;
  59. /**
  60. * 这个数组中的属性名才会进行字典和模型的转换
  61. */
  62. + (NSMutableArray *)mj_totalAllowedCodingPropertyNames;
  63. #pragma mark - 归档属性黑名单配置
  64. /**
  65. * 这个数组中的属性名将会被忽略:不进行归档
  66. *
  67. * @param ignoredCodingPropertyNames 这个数组中的属性名将会被忽略:不进行归档
  68. */
  69. + (void)mj_setupIgnoredCodingPropertyNames:(MJIgnoredCodingPropertyNames)ignoredCodingPropertyNames;
  70. /**
  71. * 这个数组中的属性名将会被忽略:不进行归档
  72. */
  73. + (NSMutableArray *)mj_totalIgnoredCodingPropertyNames;
  74. #pragma mark - 内部使用
  75. + (void)mj_setupBlockReturnValue:(id (^)(void))block key:(const char *)key;
  76. @end