NS 타입과 CF 타입간의 형 변환
● __bridge
(__bridge T) op
op를 T타입으로 브릿지 캐스팅할 때 사용
● __bridge_retained (혹은 CFBridgingRetain())
(__bridge_retained T) op
NSType 포인터(op)를 CFType 포인터(T)로 바꿀 때 사용
NSArray *array = [[NSArray alloc] init];
CFArrayRef cfArray = (__bridge_retained CFArrayRef)array;
위 코드 블럭은 아래와 동일하다.
NSArray *array = [[NSArray alloc] init];
CFArrayRef cfArray = (CFArrayRef)CFBridgingRetain(array);
● __bridge_transfer (혹은 CFBridgingRelease())
(__bridge_transfer T) op
CFType 포인터(op)를 NSType 포인터(T)으로 바꿀 때 사용
CFArrayRef cfArray = CFArrayCreate(...);
NSArray *array = (__bridge_transfer NSArray *)cfArray;
위 코드 블럭은 아래와 동일하다
CFArrayRef cfArray = CFArrayCreate(...);
NSArray *array = (NSArray *)CFBridgingRelease(cfArray);
타입 캐스팅을 통한 ARC에 대한 부분은 아래 링크에 자세하게 나와 있으니 추가로 읽어보면 좋을 것 같다.
참고 링크 : http://seorenn.blogspot.com/2015/01/objective-c-arc.html