objective-c _bridge_transfer, _bridge_retained, _bridge

理解__bridge,__bridge_transfer和__bridge_retained =================以下未经说明,都是在ARC环境下============== 在Cocoa应用程序中,我们常常会使用到Core Foundation-style objects,例如CFArrayRef 或者 CFMutableDictionaryRef等等 编译器不会自动管理Core Foundation-style objects的生命周期,你必须根据Core Fou 阅读详情
  • (__bridge_transfer <NSType>) op or alternatively CFBridgingRelease(op) is used to consume a retain-count of aCFTypeRef while transferring it over to ARC. This could also be represented byid someObj = (__bridge <NSType>) op; CFRelease(op);

  • (__bridge_retained <CFType>) op or alternatively CFBridgingRetain(op) is used to hand anNSObject over to CF-land while giving it a +1 retain count. You should handle aCFTypeRef you create this way the same as you would handle a result ofCFStringCreateCopy(). This could also be represented byCFRetain((__bridge CFType)op); CFTypeRef someTypeRef = (__bridge CFType)op;

  • __bridge just casts between pointer-land and Objective-C object-land. If you have no inclination to use the conversions above, use this one.

above is summary

A bridged cast is a C-style cast annotated with one of three keywords:

(__bridge T) op casts the operand to the destination type T. If T is a retainable object pointer type, then op must have a non-retainable pointer type. If T is a non-retainable pointer type, then op must have a retainable object pointer type. Otherwise the cast is ill-formed. There is no transfer of ownership, and ARC inserts no retain operations.

(__bridge_retained T) op casts the operand, which must have retainable object pointer type, to the destination type, which must be a non-retainable pointer type. ARC retains the value, subject to the usual optimizations on local values, and the recipient is responsible for balancing that +1.

(__bridge_transfer T) op casts the operand, which must have non-retainable pointer type, to the destination type, which must be a retainable object pointer type. ARC will release the value at the end of the enclosing full-expression, subject to the usual optimizations on local values.

These casts are required in order to transfer objects in and out of ARC control; see the rationale in the section on conversion of retainable object pointers.

Using a __bridge_retained or __bridge_transfer cast purely to convince ARC to emit an unbalanced retain or release, respectively, is poor form.


Objective-C 和 Core Foundation 对象相互转换的内存管理总结 Objective-C 和 Core Foundation 对象相互转换的内存管理总结iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString 和 CFStringRef 来说,直接转换豪无压力:CFStringRef aCFString = (CFStringRef)aNSString; NSString *aNSString = (NS 阅读详情

相关推荐

从零开始!在 Windows 上安装与配置 Dify

这篇博客将详细介绍如何在 Windows 系统上部署 Dify,适合零基础用户。从 Docker 和 WSL 的安装配置开始,逐步指导用户设置 Git、Docker 环境以及 Dify 配置文件,解决可能遇到的端口冲突等问题,最终完成 Dify 的启动和测试。通过简明易懂的步骤,帮助用户在本地成功运行 Dify,实现模型供应商配置,让 Dify 项目在 Windows 平台上顺利上线。

qq_49035156的博客 5万+

Objective-C 初阶 —— __bridge & __bridge_retained & __bridge_transfer

本文介绍了ARC(自动引用计数)与MRC(手动引用计数)的概念,以及三种桥接方式(__bridge、__bridge_retained、__bridge_transfer)的使用场景和引用计数变化。ARC自动管理引用计数,而MRC需手动调用retain/release。__bridge仅进行类型转换,不改变引用计数;__bridge_retained会增加MRC侧引用计数;__bridge_transfer会将MRC引用计数转移至ARC侧。文章通过代码示例直观展示了不同桥接方式下引用计数的变化情况,帮助开发

m0_73093743的博客 572

Unity 接入 Steam 平台

Unity 接入 steam sdk 的登录和应用内购买功能

MarinaTsang的博客 3906

objective-c中__bridge,__bridge_retained和__bridge_transfer区别

使用ARC 能帮我们减轻不少内存管理方面的负担,但对于CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation 和ARC 之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字。   __bridge 只做类型转换,但是不

passion_wu128的专栏 856

(Touch™)搭建 Windows 开发环境

> OpenHaptics 开发包参考文档。

置心一处,便无事不办 1503

Vmware安装windowsServer2022版本

全网最详细的Vmware安装windowsServer2022版本

A乐神的博客 7018

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

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

站在巨人的肩膀上 1万+

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7372

内存管理(Core Foundation object和Objective - C转换)__bridge,__bridge_retained和__bridge_transfer

使用ARC能帮我们减轻不少内存管理方面的负担,但是arc也有其不足之处。 最近碰到了CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字。 根据苹果官方的

帅帅的专栏 794

机器学习笔记 - 神经辐射场(NeRF)的简要概述

神经辐射场十分重要。在表示和渲染 3D 场景领域,神经辐射场 (NeRF) 在准确性方面取得了巨大突破。给定底层场景的多个图像,NeRF 可以从任意视点重建该场景的高分辨率、2D 渲染图。与局部光场融合 (LLFF) 和场景表示网络 (SRN) 等现有技术相比,NeRF 更能够捕获场景外观和几何形状的复杂组成部分(例如,依赖于视图的反射和复杂的材料)。NeRF的研究目的是合成同一场景不同视角下的图像。

学以致用 知行合一 1693

【项目实战】自动化测试软件VectorCAST介绍

VectorCAST是一款先进的自动化测试软件。VectorCAST是一款功能强大、易于使用的自动化测试软件。VectorCAST适用于各种嵌入式系统的测试。VectorCAST为嵌入式系统的测试提供了一种高效、可靠的解决方案。VectorCAST提供了一整套完整的测试工具,包括测试管理、代码覆盖、缺陷定位、报告生成等,以帮助开发人员提高测试效率,确保软件质量。VectorCAST支持。

奶爸的编程之路,也就一周冷个三天 2012

关于 __bridge、 _bridge_retained 、__bridge_transfer的正确理解

“_ _ bridge_retained 转换”和 “_ _ bridge_transfer转换” id obj = [[NSObject alloc] init]; void *p = (__bridge_retained void *)obj; _ _ bridge_retained 转换可使要转换赋值的变量也持有所赋值的对象。下面我们来看ARC 无效时的源代码是如何编写的。 /*

有志者事竟成 756

IEEE Journal of Biomedical and Health Informatics(JBHI)投稿经验分享

《IEEE Journal of Biomedical and Health Informatics投稿经验分享》详细记录了在影响因子6.7的中科院一区期刊JBHI的投稿历程(2025.1-5月,历时4个月)。文章重点分析:1)审稿特色:4位审稿人差异显著,领域专家意见专业但要求严苛;2)修改要点:需重视大修(补充实验/原理阐述),并注意将回复内容同步至正文;3)期刊特点:送审率高但审稿严格,常规投稿周期约4-5个月;4)实用建议:建议首次大修全力以赴,善用AI工具辅助写作,避免拖延。

LiRongLu_的博客 5089

IOS开发之_bridge, _bridge_transfer和_bridge_retained

自Xcode4.2开始导入ARC机制后,为了支持对象间的转型,Apple又增加了许多转型用的关键字。 id obj = [[NSObject alloc] init]; void *p = (_bridge void *)obj; id o = (_bridge id)p; 将objective-C的对象类型用_bridge转换为void*类型和使用_unsafe_unretained关键

157

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Objective-C 与 C语言之间的转换

C语言的结构体(struct或union)成员中,如果存在Objective-C对象型变量,便会引起编译错误。 struct Data { NSMutableArray *array; } error: ARC forbids Objective-C objs in structs or unions NSMutableArray *array; 虽然是LLVM编译器3.0...

2030

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

「OC」__bridge关键字的使用

在学习小白书关于引用计数之中Foundation框架和框架相互转化后的相关内容,学习到了__bridge这个关键字,因此对其进行学习。

aa2002aa的博客 479

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: objective-c protocols and delegates 基础
下一篇: xcode ARC是什么
fromdw
博客等级 码龄20年 14粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值