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 阅读详情

相关推荐

AI计算,为什么要用GPU?

几年后,2012年,神经网络之父杰弗里·辛顿(Geoffrey Hinton)的两个学生——亚历克斯·克里切夫斯基(Alex Krizhevsky)、伊利亚·苏茨克沃(Ilya Sutskever),利用“深度学习+GPU”的方案,提出了深度神经网络AlexNet,将识别成功率从74%提升到85%,一举赢得Image Net挑战赛的冠军。根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 1675

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

基于TKVA与深度学习的量子点微型光谱仪光谱重建改进算法研究

本文提出了一种融合深度学习的改进TKVA算法(TKVA-DL),用于提升量子点微型光谱仪的光谱重建精度。该方法创新性地结合深度先验网络与注意力机制,通过自适应学习光谱隐式先验替代传统固定正则化项,并动态加权探测器响应通道。实验表明,所提方法在仿真和实测数据上均显著优于传统TKVA及主流深度学习算法,RMSE降低35%,PSNR提升4.2 dB,同时保持物理可解释性。完整MATLAB实现验证了方法的有效性与可复现性,为微型光谱仪的高精度重建提供了新思路。 关键词:量子点微型光谱仪;光谱重建;Tikhonov正

AI的内部世界的博客 85

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

将GroundDINO、EdgeMTAM和FoundationPose的ONNX模型转换为TensorRT格式并部署到NVIDIA Jetson Orin平台的完整技术指南

TensorRT模型部署指南:从ONNX到Jetson Orin的优化实践 本文详细介绍了将GroundDINO、EdgeMTAM和FoundationPose模型从ONNX格式转换为TensorRT引擎并在Jetson Orin平台部署的全流程。主要内容包括: 环境配置:JetPack 5.1.2+环境搭建,TensorRT工具链安装,存储与交换空间优化 模型转换:动态尺寸处理、自定义算子实现、层融合策略及INT8量化校准 部署优化:引擎序列化加密、多模型并行推理架构设计、CUDA流异步执行 实战技巧。

huanghm88的专栏 438

树根互联Java开发面试题及参考答案

说一下 Java 集合类。 Java 集合类是用于存储和操作一组对象的容器。它提供了多种数据结构,方便程序员对数据进行高效的管理和处理。 Java 集合框架主要包括两大接口:Collection 和 Map。 Collection 接口是一组对象的集合,它有三个主要的子接口:List、Set 和 Queue。 List 接口代表有序的集合,可以包含重复的元素。例如 ArrayList,它是基于数组实现的动态数组。它的优点是随机访问效率高,通过索引访问元素的时间复杂度为 O (1)。当

大模型大数据攻城狮的专栏 856

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

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

站在巨人的肩膀上 1万+

深度剖析OpenHarmony AI Engine:开发板端侧大模型推理插件机制全链路拆解

/ 加载动态库// 获取符号地址// 关闭动态库// 获取错误信息public:// 单例获取// 销毁实例// 加载插件// 卸载插件private:// 获取插件实例// 插件映射锁// 插件映射表public:Plugin();~Plugin();// 加载算法// 卸载算法// 获取算法实例// 设置算法实例private:// 算法接口指针// 动态库句柄// 算法ID// 版本信息// 配置信息字符串int len;

m0_67505153的博客 509

内存管理(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

6、深入解析Microsoft 365核心服务对比与迁移策略

本文深入解析了Microsoft 365的核心服务,包括身份和设备管理、现代设备配置体验、Exchange和SharePoint的迁移策略以及Microsoft Teams的协作功能。同时探讨了迁移过程中需要考虑的安全控制措施,为组织规划和实施云迁移项目提供了全面的指导和建议。

k8s6orchestrator的博客 108

S7-1500——(一)西门子PLC编程算法及程序设计1、拆解基本算法(一)

顺序队列也是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出的特性工作过程:需要两个指针来指向存取元素的位置(头指针,尾指针)如下图头指针指向队列里边第一个元素位置(即下次出队元素所在的位置)尾指针是指向队列内最后一个元素的下一个位置(即下次要入队的元素要存放的位置)空队状态:最初始状态,队列没有任何元素,头指针和尾指针都指向队头,(由于没有任何元素,不能做出队操作,可进行入队操作)入队操作出队操作满队:一直入队,最终元素装满队列;满队后,虽然队列前面还有空间,但由于。

大小曲奇的博客 1609

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

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

有志者事竟成 756

Open3D 实现CSF布料模拟算法【2025最新版】

CSF布料模拟算法在open3d模块下的实现,博客长期更新,本文最近更新时间为:2025年1月16日。。

点云侠的博客 5747

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

「OC」__bridge关键字的使用

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

aa2002aa的博客 479

visio安装包

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

上一篇: 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、付费专栏及课程。

余额充值