iOS 메모리 관리 part3: live^Toll-Free Bridging
( bridge T)op: 컴파일러가 bridge에 있을 때 아무것도 하지 말라고 알려주기
// objc to cf
NSString *nsStr = [self createSomeNSString];
CFStringRef cfStr = (__bridge CFStringRef)nsStr;
CFUseCFString(cfStr);
// CFRelease(cfStr);
// Objc
// cf to objc
CFStringRef hello = CFStringCreateWithCString(kCFAllocatorDefault, "hello", kCFStringEncodingUTF8);
NSString *world = (__bridge NSString *)(hello);
CFRelease(hello); //
[self useNSString:world];
// CF
2. __bridge_retained 양쪽 다 없애야 돼요.
( bridge retained T)op: (ObjC가 CF를 돌릴 때 사용) 컴파일러가 bridge에 있을 때retain 대상을 알려주고 개발자는 CF 쪽에서 대상을 방출해야 한다.
// objc to cf
NSString *nsStr = [self createSomeNSString];
CFStringRef cfStr = (__bridge_retained CFStringRef)nsStr;
CFUseCFString(cfStr);
CFRelease(cfStr); //
// Objc Objc +CF
3. __bridge_transfer Objc 엔드 제거
( bridge transfer T)op: (CF가 ObjC로 전환될 때 사용) 컴파일러에게 CF 대상의 소유권을 이전하고 개발자가 CF 쪽에서 대상을 방출할 필요가 없음을 알려줍니다.
// cf to objc
CFStringRef hello = CFStringCreateWithCString(kCFAllocatorDefault, "hello", kCFStringEncodingUTF8);
NSString *world = (__bridge_transfer NSString *)(hello);
// CFRelease(hello);
[self useNSString:world];
// CF Objc +CF
기사 참조: Toll-Free Bridging
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.