MJExtensionConst.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #ifndef __MJExtensionConst__H__
  2. #define __MJExtensionConst__H__
  3. #import <Foundation/Foundation.h>
  4. #ifndef MJ_LOCK
  5. #define MJ_LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER);
  6. #endif
  7. #ifndef MJ_UNLOCK
  8. #define MJ_UNLOCK(lock) dispatch_semaphore_signal(lock);
  9. #endif
  10. // 信号量
  11. #define MJExtensionSemaphoreCreate \
  12. extern dispatch_semaphore_t mje_signalSemaphore; \
  13. extern dispatch_once_t mje_onceTokenSemaphore; \
  14. dispatch_once(&mje_onceTokenSemaphore, ^{ \
  15. mje_signalSemaphore = dispatch_semaphore_create(1); \
  16. });
  17. // 过期
  18. #define MJExtensionDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
  19. // 构建错误
  20. #define MJExtensionBuildError(clazz, msg) \
  21. NSError *error = [NSError errorWithDomain:msg code:250 userInfo:nil]; \
  22. [clazz setMj_error:error];
  23. // 日志输出
  24. #ifdef DEBUG
  25. #define MJExtensionLog(...) NSLog(__VA_ARGS__)
  26. #else
  27. #define MJExtensionLog(...)
  28. #endif
  29. /**
  30. * 断言
  31. * @param condition 条件
  32. * @param returnValue 返回值
  33. */
  34. #define MJExtensionAssertError(condition, returnValue, clazz, msg) \
  35. [clazz setMj_error:nil]; \
  36. if ((condition) == NO) { \
  37. MJExtensionBuildError(clazz, msg); \
  38. return returnValue;\
  39. }
  40. #define MJExtensionAssert2(condition, returnValue) \
  41. if ((condition) == NO) return returnValue;
  42. /**
  43. * 断言
  44. * @param condition 条件
  45. */
  46. #define MJExtensionAssert(condition) MJExtensionAssert2(condition, )
  47. /**
  48. * 断言
  49. * @param param 参数
  50. * @param returnValue 返回值
  51. */
  52. #define MJExtensionAssertParamNotNil2(param, returnValue) \
  53. MJExtensionAssert2((param) != nil, returnValue)
  54. /**
  55. * 断言
  56. * @param param 参数
  57. */
  58. #define MJExtensionAssertParamNotNil(param) MJExtensionAssertParamNotNil2(param, )
  59. /**
  60. * 打印所有的属性
  61. */
  62. #define MJLogAllIvars \
  63. - (NSString *)description \
  64. { \
  65. return [self mj_keyValues].description; \
  66. }
  67. #define MJExtensionLogAllProperties MJLogAllIvars
  68. /** 仅在 Debugger 展示所有的属性 */
  69. #define MJImplementDebugDescription \
  70. - (NSString *)debugDescription \
  71. { \
  72. return [self mj_keyValues].debugDescription; \
  73. }
  74. /**
  75. * 类型(属性类型)
  76. */
  77. FOUNDATION_EXPORT NSString *const MJPropertyTypeInt;
  78. FOUNDATION_EXPORT NSString *const MJPropertyTypeShort;
  79. FOUNDATION_EXPORT NSString *const MJPropertyTypeFloat;
  80. FOUNDATION_EXPORT NSString *const MJPropertyTypeDouble;
  81. FOUNDATION_EXPORT NSString *const MJPropertyTypeLong;
  82. FOUNDATION_EXPORT NSString *const MJPropertyTypeLongLong;
  83. FOUNDATION_EXPORT NSString *const MJPropertyTypeChar;
  84. FOUNDATION_EXPORT NSString *const MJPropertyTypeBOOL1;
  85. FOUNDATION_EXPORT NSString *const MJPropertyTypeBOOL2;
  86. FOUNDATION_EXPORT NSString *const MJPropertyTypePointer;
  87. FOUNDATION_EXPORT NSString *const MJPropertyTypeIvar;
  88. FOUNDATION_EXPORT NSString *const MJPropertyTypeMethod;
  89. FOUNDATION_EXPORT NSString *const MJPropertyTypeBlock;
  90. FOUNDATION_EXPORT NSString *const MJPropertyTypeClass;
  91. FOUNDATION_EXPORT NSString *const MJPropertyTypeSEL;
  92. FOUNDATION_EXPORT NSString *const MJPropertyTypeId;
  93. #endif