__bridge __bridge_retained __bridge_transfer

__bridge只做类型转换,但是不修改对象(内存)管理权;

__bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;

__bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。

时间: 2024-10-14 04:25:23

__bridge __bridge_retained __bridge_transfer的相关文章

__bridge,__bridge_transfer和__bridge_retained的使用和区别【转载】

Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组.集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoop端口和soket通讯Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation

__bridge_retained/__bridge_transfer/__bridge使用详解

第一.__bridge_retained的使用 __bridge_retained转换可使要转换的变量也持有所赋值的对象 void *p=0; { id obj=[[NSObject alloc] init]; p=(__bridge_retained void*)obj; } NSLog(@"class=%@",[(__bridge id)p class]); 输出结果: class=NSObject 分析: 变量作用域结束后,虽然obj失效,__bridge_retained转换使

__bridge,__bridge_transfer和__bridge_retained详解

Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组.集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoop端口和soket通讯Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation

iOS 开发之__bridge __bridge_retained 和 __bridge_transfer的区别

简介:__bridge:实现id类型与void*类型的相互转换: __bridge_retained:类型被转换时,其对象的所有权也将被变换后变量所持有 __bridge_transfer:类型被转换时,其对象的所有权也将被释放 __bridge_retained 是编译器替我们做了 retain 操作,而 __bridge_transfer 是替我们做了 release1. 详情: 在iOS世界,主要有两种对象:Objective-C 对象和 Core Foundation 对象0.Core

[Objective-C]__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用

使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说.但是像我这种Java基础本身就不牢固,做了两年的iOS已经习惯手动管理内存的半吊子,使用ARC还是经常碰壁. 最近碰到了CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字. 根据苹果

__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用

最近碰到了CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字. 根据苹果官方的文档(https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Int

iOS开发之__bridge,__bridge_transfer和__bridge_retained

本文转至:http://www.qingpingshan.com/rjbc/ios/157477.html 引言 Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 1.群体数据类型 (数组.集合等) 2.程序包 3.字符串管理 4.日期和时间管理 5.原始数据块管理 6.偏好管理 7.URL及数据流操作 8.线程和RunLoop 9.端口和

ios 中__bridge,__bridge_transfer和__bridge_retained详解

转载自:http://www.cocoachina.com/industry/20130411/5975.html Objective-C和Core Foundation 对象相互转换的内存管理总结 发布于:2013-04-11 13:37阅读数:4109 iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString 和 CFStringRef 来说,直接转换毫无压力: [cpp] view plaincopyprint? 01. CFStr

ios Toll-Free Bridging

有一些数据类型是能够在 Core Foundation Framework 和 Foundation Framework 之间交换使用的.这意味着,对于同一个数据类型,你既可以将其作为参数传入 Core Foundation 函数,也可以将其作为接收者对其发送 Objective-C 消息(即调用ObjC类方法).这种在 Core Foundation 和 Foundation 之间交换使用数据类型的技术就叫 Toll-Free Bridging. 举例说明,NSString和CFStringR