使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说。使用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。
- 浏览: 280542 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (208)
- ios (94)
- android (28)
- j2ee (17)
- java (33)
- C++ (7)
- ios bug (3)
- iOS 4s 5s 适配 (2)
- iOS7 (6)
- java设计模式 (4)
- svn (1)
- git (2)
- cocoa2d-x (3)
- iphone (5)
- eclipse (7)
- mysql (1)
- oracle (0)
- sqlserver (0)
- 云计算 (0)
- html5 (0)
- object-c (7)
- div+css (3)
- photoshop (0)
- 常用算法 (1)
- jquery mobile (3)
- 手机网站 (4)
- Linux (7)
- 学习网址 (2)
- lua (1)
- swift (2)
- php (2)
- SSH (3)
- 笔试题 (6)
- spring (2)
- hibernate (2)
- struts2 (3)
- FreeMarker (0)
- Spring MVC (3)
- jquery (2)
- tomcat (3)
- apache (0)
- JBoss (1)
- 分布式应用与集群 (0)
- 名词概念解释 (1)
- EJB (1)
- webservice (0)
- maven (1)
- Mac OS X (6)
- 其他 (1)
- spring boot (2)
- spring security (1)
- spring io (1)
最新评论
-
paladinosment:
你这个spring注解大全,就这么几行,还真是全。。。。。
spring 注解大全 -
samlomg:
我擦!我都进来了,你给我看这个!
shell 写多行命令 -
wenrisheng:
可以,最后就再写上自己的一点新的体会,这样才提高的快!
SSH 包说明和下载路径 -
samlomg:
博主我能转载文章么?
SSH 包说明和下载路径
发表评论
-
xcode-select 命令
2016-10-11 09:05 1638xcode-select [-help] ... -
ios 10 适配
2016-10-09 10:36 386一、证书管理 用Xcode8打开工程后,比较明显的就 ... -
iphone,iPad的AppIcon与LaunchImage尺寸
2016-04-14 16:52 14581x 2x ... -
Privacy policy 隐私政策
2016-02-17 09:47 1096隐私政策 我们不会收集及任何形式存储来自你HealthK ... -
swift 学习教程
2016-02-15 15:59 436swift中文网:http://c.biancheng.ne ... -
iOS 通知
2015-10-30 12:02 696#define UMSYSTEM_VERSION_GREA ... -
ios 通知
2016-06-07 14:18 398苹果的通知分为本地通知和远程通知 若用户直接启动,la ... -
CocoaPods (二)
2015-05-28 09:09 737CocoaPods简介 每种语言发展到一个阶段,就会出现 ... -
xcode 静态库资源文件及xib打包
2015-04-08 22:24 2506xcode 静态库资源文件及xib封装目前有个需求,需要把. ... -
移动跨平台的10大跨平台工具
2015-03-13 11:30 708HTML/JavaScript/CSS篇1. PhoneGap ... -
autolayout第三方库
2015-02-05 10:50 435Masonry:https://github.com/Mas ... -
autolayout第三方库
2015-02-05 10:49 710Masonry:https://github.com/Mas ... -
手机支付开放平台
2015-02-03 15:28 539微信支付: https://open.weixin.qq ... -
IOS工程自动打包并发布脚本实现
2015-01-31 09:19 912前言 IOS的开发过程中 ... -
IOS 私有API的使用
2015-01-29 16:15 647做企业级程序,需要搞设备的udid等信息,但是ios7 ... -
Xcode iOS 制作静态库 .a 和 .framework的参考资料
2015-01-28 14:21 733http://blog.csdn.net/zsomsom/a ... -
Xcode 6制作动态及静态Framework
2015-01-28 14:06 3848创建iOS动态库 新建工程并选择默认Target为Coc ... -
PhoneGap 2.9配置安装
2015-01-27 09:39 4181.下载PhoneGap:http://phonegap.c ... -
xcode 安装wax oc lua
2015-01-23 18:01 1837关于ios调用lua,目前大 ... -
Xcode设置项之Architectures和Valid Architectures
2015-01-23 17:31 545http://www.cocoachina.com/indu ...
相关推荐
使用`(__bridge)`、`(__bridge_transfer)`和`(__bridge_retained)`可以控制转换时的引用计数行为。 **7. MRC与ARC的切换** 虽然ARC是推荐的内存管理方式,但在某些情况下,可能需要暂时关闭ARC。这可以通过在特定...
- **所有权关键字函数参数转换**:在使用无费用桥接时,开发者可以通过使用所有权关键字来明确指定函数参数的所有权关系,例如`__bridge`、`__bridge_transfer`和`__bridge_retained`等。 #### 转换项目时常见的...
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
NX二次开发UF_DRF_is_annotation_retained 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...
NX二次开发UF_DRF_ask_retained_state 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业...
NX二次开发UF_DRF_set_retained_state 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业...
这个库提供了与MQTT服务器交互所需的函数和结构体。安装过程可能包括编译库文件和设置环境变量,以便编译器能够找到相关的头文件和库。 `Makefile`是构建系统的配置文件,它定义了编译和链接程序的规则。在这个例子...
5. **Shallow Heap / Retained Heap**:区分对象自身占用的内存(shallow heap)和由其间接保持的对象占用的内存(retained heap)。 通过这些功能,MAT可以帮助开发者识别和修复内存泄漏问题,从而提高Java应用的...
**Retained Mode** 模式主要是为了简化2D和3D图形的创建和管理,它允许开发者以对象的形式存储图形,便于修改和重复使用。与之相对的是**Immediate Mode** ,这种模式在每次渲染时都会处理所有的图形指令,更适合于...
手动 PGA 内存管理需要用户指定排序区和散列区所使用的内存,每个连接使用相同的内存。自动 PGA 内存管理则是 Oracle 根据系统负载决定具体分配的内存。 在手动 PGA 内存管理中,有三个参数对 PGA 影响最大:SORT_...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备之间的通信...希望这有助于你理解如何使用`paho-mqtt-c`库实现MQTT通信,并且涵盖了SSL/TLS加密和自动重连功能。
了解这些接口和类的工作方式对于有效地使用和扩展图形库至关重要。 4. **事件驱动编程**:GUI应用程序通常采用事件驱动模型,即用户操作触发事件,然后事件处理器响应并更新界面。理解事件处理机制是图形库开发的...
用户需要了解基本的MQTT概念,如主题(Topic)、质量等级(QoS)和保留消息(Retained Messages)。此外,可能还需要设置物联网平台的访问凭证,如用户名和密码。 在实际应用中,结合ESP8266的固件升级工具和MQTT...
项目文件和源代码位于文件夹retained_undistort_image 。 源代码位于文件main.cpp 。 使用MS Visual Studio作为IDE,这需要一些(即OpenCVinclude / lib)才能生成代码。代码说明我们实现了两种方法来产生不失真的...
`retained to simplify the path`表明`swapper_space`这个术语可能是为了简化理解和实现逻辑而引入的抽象概念。 在Linux内核源码中,`swap_state.c`文件很可能包含了处理交换空间状态的函数和数据结构。以下是一些...
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.
4. **Shallow 和 Retained Size**:分别显示对象本身占用的内存大小和通过该对象导致的内存总消耗,便于评估内存泄漏的影响。 5. **OQL(Object Query Language)**:MAT内置查询语言,允许用户根据自己的需求定制...
This setting controls whether raw binary files should be retained after the build process. Retaining these files can be useful for debugging and performance analysis. ##### STRINGS_FILE_OUTPUT_...
说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值范围: 任何有效的日期...
- MQTT的核心概念包括主题(Topic)、质量服务等级(QoS,Quality of Service)和保留消息(Retained Message)。 2. MQTT连接数据库: - MQTT通常用于实时数据传输,但并不直接处理数据库操作。要将MQTT与数据库...