2025-03-26 00:02:56 +08:00

1.4 KiB
Raw Permalink Blame History

#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 对象已由另一个所有权系统管理的情况下。