-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathARC.h
62 lines (46 loc) · 1019 Bytes
/
ARC.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//
// author: fabrice truillot de chambrier
//
// © 2011-2015, men in silicium sàrl
//
#import <Foundation/Foundation.h>
#if __has_feature( objc_arc )
#define __arc_yield __bridge_retained
#define __arc_claim __bridge_transfer
#define __bridge_claim __bridge_retained
#define __bridge_yield __bridge_transfer
NS_INLINE CF_RETURNS_RETAINED CFTypeRef NStoCF( id ns )
{
return (__arc_yield CFTypeRef) ns;
}
NS_INLINE CF_RETURNS_RETAINED void* NStoPTR( id ns )
{
return (__arc_yield void*) ns;
}
NS_INLINE id CFtoNS( CF_CONSUMED CFTypeRef cf )
{
return (__arc_claim id) cf;
}
NS_INLINE id PTRtoNS( CF_CONSUMED void* ptr )
{
return (__arc_claim id) ptr;
}
NS_INLINE void CFRetainSafe( CFTypeRef cf )
{
#ifdef __cplusplus
if ( cf == nullptr ) return;
#else
if ( cf == NULL ) return;
#endif
CFRetain( cf );
}
NS_INLINE void CFReleaseSafe( CF_RELEASES_ARGUMENT CFTypeRef cf )
{
#ifdef __cplusplus
if ( cf == nullptr ) return;
#else
if ( cf == NULL ) return;
#endif
CFRelease( cf );
}
#endif