// // ARCMacros.h // // Created by John Blanco on 1/28/2011. // Rapture In Venice releases all rights to this code. Feel free use and/or copy it openly and freely! //
#if !defined(__clang__) || __clang_major__ < 3 #ifndef __bridge #define __bridge #endif
#ifndef __bridge_retain #define __bridge_retain #endif
#ifndef __bridge_retained #define __bridge_retained #endif
#ifndef __autoreleasing #define __autoreleasing #endif
#ifndef __strong #define __strong #endif
#ifndef __unsafe_unretained #define __unsafe_unretained #endif
#ifndef __weak #define __weak #endif #endif
#if __has_feature(objc_arc) #define SAFE_ARC_PROP_RETAIN strong #define SAFE_ARC_RETAIN(x) (x) #define SAFE_ARC_RELEASE(x) #define SAFE_ARC_AUTORELEASE(x) (x) #define SAFE_ARC_BLOCK_COPY(x) (x) #define SAFE_ARC_BLOCK_RELEASE(x) #define SAFE_ARC_SUPER_DEALLOC() #define SAFE_ARC_AUTORELEASE_POOL_START() @autoreleasepool { #define SAFE_ARC_AUTORELEASE_POOL_END() } #else #define SAFE_ARC_PROP_RETAIN retain #define SAFE_ARC_RETAIN(x) ([(x) retain]) #define SAFE_ARC_RELEASE(x) ([(x) release]) #define SAFE_ARC_AUTORELEASE(x) ([(x) autorelease]) #define SAFE_ARC_BLOCK_COPY(x) (Block_copy(x)) #define SAFE_ARC_BLOCK_RELEASE(x) (Block_release(x)) #define SAFE_ARC_SUPER_DEALLOC() ([super dealloc]) #define SAFE_ARC_AUTORELEASE_POOL_START() NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; #define SAFE_ARC_AUTORELEASE_POOL_END() [pool release]; #endif //
http://raptureinvenice.com/arc-support-without-branches/
|