ARCCompile.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // ARCCompile.h
  3. // CommonLibrary
  4. //
  5. // Created by Alexi on 14-2-10.
  6. // Copyright (c) 2014年 CommonLibrary. All rights reserved.
  7. //
  8. #ifndef CommonLibrary_ARCCompile_h
  9. #define CommonLibrary_ARCCompile_h
  10. #if ! __has_feature(objc_arc)
  11. #define CommonAutoRelease(__v) ([__v autorelease])
  12. #define CommonReturnAutoReleased Autorelease
  13. #define CommonRetain(__v) ([__v retain])
  14. #define CommonReturnRetained Retain
  15. #define CommonRelease(__v) ([__v release])
  16. #define CommonDispatchQueueRelease(__v) (dispatch_release(__v))
  17. #define PropertyRetain retain
  18. // 在括号内声明时使用
  19. #define CommonDelegateAssign
  20. // 在property中使用
  21. #define DelegateAssign assign
  22. #define CommonSuperDealloc() [super dealloc]
  23. #else
  24. // -fobjc-arc
  25. #define CommonAutoRelease(__v)
  26. #define CommonReturnAutoReleased(__v) (__v)
  27. #define CommonRetain(__v)
  28. #define CommonReturnRetained(__v) (__v)
  29. #define CommonRelease(__v)
  30. #define PropertyRetain strong
  31. #define CommonDelegateAssign __unsafe_unretained
  32. #define DelegateAssign unsafe_unretained
  33. #define CommonSuperDealloc()
  34. #if TARGET_OS_IPHONE
  35. // Compiling for iOS
  36. #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000
  37. // iOS 6.0 or later
  38. #define CommonDispatchQueueRelease(__v)
  39. #else
  40. // iOS 5.X or earlier
  41. #define CommonDispatchQueueRelease(__v) (dispatch_release(__v))
  42. #endif
  43. #else
  44. // Compiling for Mac OS X
  45. #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
  46. // Mac OS X 10.8 or later
  47. #define CommonDispatchQueueRelease(__v)
  48. #else
  49. // Mac OS X 10.7 or earlier
  50. #define CommonDispatchQueueRelease(__v) (dispatch_release(__v))
  51. #endif
  52. #endif
  53. #endif
  54. #endif