[iOS] __bridge 와 __bridge_transfer
http://stackoverflow.com/questions/17544765/when-to-use-bridge-transfer-and-bridge
https://soulpark.wordpress.com/2013/07/25/ios-arc-from-top-developer/
-
__bridge 와 __bridge_transfer 는 ARC 에게 소유권 처리에 대해 알리는 keyword 이다.
보통 non-objective-c pointer 에 붙어서 사용된다.
-
__bridge 는 ARC 에게 해당 포인터에 대해 소유권을 갖지 말라고 알려주는 것이다.
이렇게 마킹한 녀석은 사용자 측에서 알아서 free 나 CFRelease 등을 사용해서 메모리 해제를 해주어야 한다.
-
__bridge_transfer 는 __bridge 와 반대로 ARC 에게 해당 포인터에 대한 소유권을 가져가라고 알리는 것이다.
이 경우는 다른 objective-c object 처럼 우리는 메모리 관리를 신경쓰지 않아도 되겠다.
-
Core Foundation API 와 Objective-C 클래스간의 상호 캐스팅이 가능한 것들이 있다.
이런 것들은 ARC 에게 메모리 관리 책임을 맡길 수 있다.
( 이런 클래스를 toll-free bridged type 이라고 부른다. )
-
toll-free bridged type 이 타입 캐스팅을 할 때 ( objective-c -> core foundation 이든 반대든 )
ARC 에게 메모리 관리 책임에 대해 알려줄 필요가 있고,
이 때 사용하는 keyword 가 __bridge, __bridge_transfer, __bridge_retained 이다.
-
__bridge_retained 는 __bridge_transfer 와 반대로 objective-c object 가 core foundation object 로 캐스팅 될 때 사용되는데, ARC 가 아닌 개발자에게 메모리 해지의 책임이 전가된다.
'프로그래밍 놀이터 > iOS' 카테고리의 다른 글
[iOS] 연락처 이미지에 접근하기 (0) | 2017.06.23 |
---|---|
[iOS] 특정 계정의 연락처에 접근하려면? (0) | 2017.06.22 |
[iOS Study] 연락처 프로그래밍 가이드 in iOS - Direct Interacting (0) | 2017.06.20 |
[iOS Study] 연락처 프로그래밍 가이드 in iOS - BaseObjects (0) | 2017.06.19 |
[iOS] CFArray 에서 CF 가 뭔가요? (0) | 2017.06.18 |
댓글