`

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

    博客分类:
  • ios
阅读更多

使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说。但是像我这种Java基础本身就不牢固,做了两年的iOS已经习惯手动管理内存的半吊子,使用ARC还是经常碰壁。

最近碰到了CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字。

根据苹果官方的文档(https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html):

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

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

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

转自 http://www.1mima.com/tag/__bridge_transfer/

分享到:
评论

相关推荐

    d3drm.dll Direct3D Retained Mode DLL

    Direct3D Retained Mode DLL

    OC-Cpp:Objective-C++ C++混合编程

    OC-Cpp 1.在object-c++类中调用c++类 1)ViewController.m--->ViewController.mm 2)#import "OcCallCpp.h" 3)OcCallCpp.h引入C++类头文件,#include "MyCppClass.h" ...6)释放Oc对象,__bridge_transfer

    数据库参数设置技术手册

    1 前言 3 2 目的 3 3 ORACLE内存结构概述 3 4 常用参数说明 3 4.1 BUFFER_POOL_KEEP 4 4.2 CPU_COUNT 4 4.3 DB_BLOCK_BUFFERS 4 4.4 DB_BLOCK_SIZE 5 4.5 DB_FILE_MULTIBLOCK_READ_COUNT 5 4.6 GLOBAL_NAMES 5 4.7 ...

    retained_undistort_image:源代码以生成未失真的图像,其中保留了所有源图像像素。 实现两种方法(1)使用cv

    项目文件和源代码位于文件夹retained_undistort_image 。 源代码位于文件main.cpp 。 使用MS Visual Studio作为IDE,这需要一些(即OpenCVinclude / lib)才能生成代码。代码说明我们实现了两种方法来产生不失真的...

    Oracle9i的init.ora参数中文说明

    说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值范围: 任何有效的日期...

    Outlook 2003 SideBar V2.02 Alpha

    Title: Outlook 2003 SideBar V2.02 Alpha ...The author may have retained certain copyrights to this code...please observe their request and the law by reviewing all copyright conditions at the above URL.

    swap_state.rar_swap

    swapper_space is a fiction, retained to simplify the path through vmscan s shrink_page_list.

    retained:大规模的活动和保留跟踪

    保留:大规模的活动和保留跟踪 使用Redis位图,可以轻松地按日,小时或分钟的间隔按比例跟踪活动和... 与实体一样,组由您提供给Retained的唯一标识符标识。 保留默认值 Retained的默认设置是在redis://localhost:63

    virtex7_ibis_v2_0.zip

    ** /___/ /\ Date Created: 3/14/2012 ** \ \ / \ Associated Filename: virtex7_ibis_v2_0.zip ** \___\/\___\ ** ** Device: Virtex-7 ** Revision History: 2.0 Production model release ** 1.1 Preliminary ...

    retained-intron-neoantigen-pipeline:从RNA-Seq数据衍生的内含子保留事件中调用新抗原的管道

    保留内含子新抗原管道 ... 该软件包的输出(此仓库中的ir $ flat文件,示例文件run_kma_example.R和kma_​​output_file_example.csv)将直接输入到该管道。 更改外壳程序脚本getNeoantigenBinders.sh中的路径(文件

    Eclipse Memory Analyzer中文使用说明(带书签)

    使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点)报表。 Memory ...

    netlist_CH3.zip_icon

    be retained for analysis rather than the approximate models commonly introduced for the sake of computational simplicity. A computer icon appears in the margin with each introduction of MATLAB ...

    transceiver.zip_xl

    与通信有关的 % define the state variables. They will be retained to memory between % following runs. persistent state, state = xl_state(0,{xlUnsigned, 1, 0})

    An Introduction to the Mechanical_Properties_of_Solid_Polymers

    The accessible approach of the book has been retained with each chapter designed to be self contained and the theory and applications of the subject carefully introduced where appropriate. The latest...

    EMQTT(Erlang MQTT消息服务器) v2.3.11 for windows7 x64

    EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...

    EMQTT(Erlang MQTT消息服务器) v3.1.0 for Ubuntu18

    EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...

    EMQTT(Erlang MQTT消息服务器) v3.1.0 for Win7

    EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...

    EMQTT(Erlang MQTT消息服务器) v2.3.11 for Ubuntu16

    EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...

    mbedtls-mbedtls-2.16.6_mbedtls_6.16969com_ThereButForThe_

    Mbed TLS is now maintained under open governance at TrustedFirmware.org. Head there for the ... The information on this website will be retained while we migrate but please note it may be out of date.

Global site tag (gtag.js) - Google Analytics