Created
October 11, 2012 12:44
-
-
Save bluebanboom/3872052 to your computer and use it in GitHub Desktop.
ARC Support Without Branching
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment