iOS中arc的設定與使用
阿新 • • 發佈:2019-02-13
下面是一個.h檔案(附件中也上傳了.h),整合了arc的各種屬性、release判斷,直接#import在你想使用arc的類中即可。
#ifndef paixiu_PXISARC_h
#define paixiu_PXISARC_h
#ifndef PX_STRONG
#if __has_feature(objc_arc)
#define PX_STRONG strong
#else
#define PX_STRONG retain
#endif
#endif
#ifndef PX_WEAK
#if __has_feature(objc_arc_weak)
#define PX_WEAK weak
#elif __has_feature(objc_arc)
#define PX_WEAK unsafe_unretained
#else
#define PX_WEAK assign
#endif
#endif
#if __has_feature(objc_arc)
#define PX_AUTORELEASE(expression) expression
#define PX_RELEASE(expression) expression
#define PX_RETAIN(expression) expression
#else
#define PX_AUTORELEASE(expression) [expression autorelease]
#define PX_RELEASE(expression) [expression release]
#define PX_RETAIN(expression) [expression retain]
#endif
#endif
說明:在arc中,strong對應原來的retain與copy,weak對應原來的assign。
EX:舉例使用autorelease:
NSArray *testArray = PX_AUTORELEASE([[NSArray alloc] init]);
//如果支援arc,testArray就只是alloc init,release的事情由系統來做。
#ifndef paixiu_PXISARC_h
#define paixiu_PXISARC_h
#ifndef PX_STRONG
#if __has_feature(objc_arc)
#define PX_STRONG strong
#else
#define PX_STRONG retain
#endif
#endif
#ifndef PX_WEAK
#if __has_feature(objc_arc_weak)
#define PX_WEAK weak
#elif __has_feature(objc_arc)
#define PX_WEAK unsafe_unretained
#else
#define PX_WEAK assign
#endif
#endif
#if __has_feature(objc_arc)
#define PX_AUTORELEASE(expression) expression
#define PX_RELEASE(expression) expression
#define PX_RETAIN(expression) expression
#else
#define PX_AUTORELEASE(expression) [expression autorelease]
#define PX_RELEASE(expression) [expression release]
#define PX_RETAIN(expression) [expression retain]
#endif
#endif
說明:在arc中,strong對應原來的retain與copy,weak對應原來的assign。
EX:舉例使用autorelease:
NSArray *testArray = PX_AUTORELEASE([[NSArray alloc] init]);
//如果支援arc,testArray就只是alloc init,release的事情由系統來做。