__bridge.md 1.4 KB

#ios

__bridge是 Objective-C 中的一个关键字,它有助于在使用自动引用计数 (ARC) 时将 Core Foundation 类型转换为 Objective-C 类型,反之亦然。它允许您在两个内存管理系统之间传输指针,而无需更改所有权。 用法 当您想将 Core Foundation 对象转换为 Objective-C 对象而不获取所有权或更改引用计数时,使用该关键字。 例子 __bridge您可以在代码中使用以下方法:

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

// Convert CFStringRef to NSString without changing ownership
NSString *objcString = (__bridge NSString *)cfString;

// You do not own objcString, and you must release cfString when done
CFRelease(cfString); // Release the original Core Foundation object

重要说明

•   内存管理:使用 时`__bridge`,表示 ARC 不会接管对象的所有权。如果您创建了任何 Core Foundation 对象,则您有责任释放它们。
•   所有权转移:如果您需要将所有权转移给 ARC,您可以使用`__bridge_transfer`(转移所有权)或`__bridge_retained`(也转 移所有权但保留对象)。

何时使用

•   当您需要将 Core Foundation 类型转换为 Objective-C 类型而不转移所有权时使用`__bridge`,通常是在 Core Foundation 对象已由另一个所有权系统管理的情况下。