Created
August 6, 2014 07:06
-
-
Save stonyw/3e0e8c1e7cb0b7e678e3 to your computer and use it in GitHub Desktop.
ARC Macros for both ARC and MRC
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