obsidian/笔记文件/2.笔记/__bridge_transfer.md
2025-03-26 00:02:56 +08:00

806 B
Raw Permalink Blame History

#ios

用法

当您使用 时__bridge_transfer,表示您想要取得 Core Foundation 对象的所有权并将其转让给 ARC。这意味着 ARC 将管理此对象的内存,您无需手动释放它。

例子

这是一个如何使用的简单示例__bridge_transfer

CFStringRef cfString = CFStringCreateWithCString(kCFAllocatorDefault, "Hello, Core Foundation!", kCFStringEncodingUTF8);

// Transfer ownership to ARC
NSString *objcString = (__bridge_transfer NSString *)cfString;

// Now objcString is managed by ARC, and you dont need to release cfString

重要说明

  • 使用__bridge_transfer意味着当 Objective-C 对象超出范围时Core Foundation 对象将被自动释放。
  • 如果你使用__bridge,它会转移引用而不改变所有权