使用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/
分享到:
相关推荐
Direct3D Retained Mode DLL
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 。 源代码位于文件main.cpp 。 使用MS Visual Studio作为IDE,这需要一些(即OpenCVinclude / lib)才能生成代码。代码说明我们实现了两种方法来产生不失真的...
说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值范围: 任何有效的日期...
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.
swapper_space is a fiction, retained to simplify the path through vmscan s shrink_page_list.
保留:大规模的活动和保留跟踪 使用Redis位图,可以轻松地按日,小时或分钟的间隔按比例跟踪活动和... 与实体一样,组由您提供给Retained的唯一标识符标识。 保留默认值 Retained的默认设置是在redis://localhost:63
** /___/ /\ 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 ...
保留内含子新抗原管道 ... 该软件包的输出(此仓库中的ir $ flat文件,示例文件run_kma_example.R和kma_output_file_example.csv)将直接输入到该管道。 更改外壳程序脚本getNeoantigenBinders.sh中的路径(文件
使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点)报表。 Memory ...
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 ...
与通信有关的 % define the state variables. They will be retained to memory between % following runs. persistent state, state = xl_state(0,{xlUnsigned, 1, 0})
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 V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...
EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...
EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...
EMQTT是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。EMQTT致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动...
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.