OC对象与CF对象的相互转换 和 ARC下查看OC对象的引用计数

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

  • 转换方法:
    (__bridge type)expression
    (__bridge_retained CF type)expression
    (__bridge_transfer Objective-C type)expression

一. OC对象与CF对象的相互转换

1. OC对象转CF对象
- (void)OFConvertOC {

    CFStringRef stringCF = (CFStringRef)@"OF对象 --> OC对象";

    NSString *stringOC1 = (__bridge NSString *)stringCF; // 方式一
    NSString *stringOC2 = (__bridge_transfer NSString *)stringCF; // 方式二

    NSLog(@"%@", stringOC1);
    NSLog(@"%@", stringOC2);
}
2. OF对象转OC对象
- (void)OCConvertCF {

    NSString *stringOC = @"OC对象 --> CF对象";

    CFStringRef stringCF1 = (__bridge CFStringRef)stringOC; // 方式一
    CFStringRef stringCF2 = (__bridge_retained CFStringRef)stringOC; // 方式二,但stringCF2引用计数会加1

    NSLog(@"%@", stringCF1);
    NSLog(@"%@", stringCF2);

}

二. ARC下查看OC对象的引用计数

- (void)seeRetainCountFromARC {

    NSObject *objOC = [[NSObject alloc] init];
    CFTypeRef objCF = (__bridge CFTypeRef)objOC;


    // 最初的引用计数
//    NSInteger retainCount = CFGetRetainCount(objCF);
    // 这里可以不用以__bridge前缀转换,但是如果拆开就得加上__bridge
    NSInteger retainCount = CFGetRetainCount((CFTypeRef)objOC);
    NSLog(@"最初 --- 引用计数 --- %ld", retainCount);


    // 引用计数加1
    CFRetain(objCF);
    NSLog(@"retain --- 引用计数 --- %ld", CFGetRetainCount(objCF));

    // 引用计数减1
    CFRelease(objCF);
    NSLog(@"release --- 引用计数 --- %ld", CFGetRetainCount(objCF));

    // 使用__bridge_retained为前缀转换,引用计数会加1
    objCF = (__bridge_retained CFTypeRef)objOC;
    NSLog(@"__bridge_retained --- 引用计数 --- %ld", CFGetRetainCount(objCF));


    // 当把objOC设为nil,在ARC下引用计数为0,系统会自动销毁objOC对象
    objOC = nil;
}
在线机器学习(OML-AD)应对时序数据概念漂移的异常检测实战 时序数据异常检测是监控系统健康、识别业务风险的核心技术。其基本原理是通过预测模型学习数据的正常模式,并将预测误差作为异常判定的依据。然而,当数据背后的统计规律随时间发生变化,即发生概念漂移时,传统的静态模型会失效,导致误报和漏报激增。在线机器学习技术通过增量学习,使模型能够随每个新数据点实时微调,为预测式异常检测提供了动态适应能力,从而在数据流持续演化的场景下保持检测的鲁棒性。这种将预测与检测无缝衔接的OML-AD框架,尤其适用于工业监控、金融风控等对实时性与资源效率要求高的领域,有效解决了概念漂移这一核心 阅读详情

相关推荐

UE5新手必看:如何用蓝图系统快速打造赛车游戏(含Chaos Physics配置)

本文为UE5新手提供使用蓝图系统快速打造赛车游戏的完整指南,涵盖Chaos Physics配置、载具蓝图架构设计、控制逻辑实现等关键步骤。通过详细的实战案例和优化技巧,帮助开发者高效构建具备专业物理反馈的赛车游戏原型。

weixin_29001327的博客 387

OC的引用计数

一、引用计数   引用计数是Objetive-C语言的内存管理机制,用于管理OC对象(通常指包含isa指针的结构体)的内存。     一个对象的引用计数为大于0的计数,表示这个对象被持有,不能被释放,当引用计数为0时表示这个对象需要被释放掉。   改变引用计数的方法有,retain、release、alloc、autorelease、reatinautorelease、copy、multicop...

兜兜有????的博客 385

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

iOS开发-如何查看一个对象的引用计数RetainCount

如何查看一个对象的RetainCount: printf("Retain Count = %ld\n",CFGetRetainCount((__bridge CFTypeRef)(obj)));

Pandakingli的博客 3926

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3748

【Matlab】从零开始掌握 MATLAB 安装激活:从环境搭建到问题解决全指南

打开 MATLAB,点击 “主页 - 设置路径”;点击 “添加文件夹”,选择自定义的工作文件夹,点击 “保存”,重启 MATLAB 生效。MATLAB R2024a 的安装与激活是开启 MATLAB 学习的第一步,也是构建稳定学习环境的基础。本文从安装前准备、分步操作、验证测试、问题解决到环境优化,完整覆盖了新手所需的所有知识点 —— 核心要点在于:确认系统兼容、使用合法授权、选择纯英文安装路径、完成功能验证。

unber的博客 596

【objective-C】OC对象和CF对象之间的桥接转换(bridge)

1.__bridge:CF和OC对象转化时只涉及对象类型不涉及对象所有权的转化2.__bridge_transfer:常用在讲CF对象转换成OC对象时,将CF对象的所有权交给OC对象,此时ARC就能自动管理该内存;(作用同CFBridgingRelease()) 3.__bridge_retained:(与__bridge_transfer相反)常用在将OC对象转换成CF对象时,将OC对象的所有权交给CF对象来管理

Yaso的博客 899

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1250

iPhone开发之深入浅出 (6) — ARC之对象转型

  自 Xcode4.2 开始导入ARC机制后,为了支持对象间的转型,Apple又增加了许多转型用的关键字。这一讲我们就来了解其用法,以及产生的理由。 引子 我们先来看一下ARC无效的时候,我们写id类型转void*类型的写法: 1 2 id obj = [[NSObject alloc] init]; void *p = obj; 反过来,当把vo...

SouthKing 452

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

青岛鼎信Java开发面试题及参考答案(3万字长文,多张原理图)

MySQL 的事务特性有哪些? MySQL 事务具有四个重要特性,被称为 ACID 特性。 原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么全部执行,要么全部不执行。例如,在银行转账场景中,从账户 A 转账到账户 B,包括扣减账户 A 的金额和增加账户 B 的金额这两个操作必须作为一个整体来完成。如果在执行过程中发生错误,比如系统崩溃或者数据库出现故障,那么已经执行的部分必须全部回滚,就好像整个转账操作从未发生过一样。 一致性(Consistency):事务必须

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

ARC 和 非ARC 下 oc 对象 和 CF 对象的转换

在OC和FC之间进行转化的时候,主要是对象的归属问题。共有两种方式: 1、使用宏,可以标识归属者从OC到CF,还是从CF到OC。 NS_INLINE CFTypeRef CFBridgingRetain(id X) { return (__bridge_retain CFTypeRef)X; } NS_INLINE id CFBridgingRelease(CFTy

LIN1986LIN的专栏 2051

Python爬虫实战:基于最新技术栈的政府招标采购数据抓取与分析

对于企业、研究人员和数据分析师来说,能够高效地获取这些数据意味着可以获得宝贵的商业洞察和市场先机。随着反爬技术的不断升级和网站结构的日益复杂,传统的爬虫方法已经难以满足需求。我们将采用Selenium、Playwright等现代浏览器自动化工具,结合Scrapy框架和异步请求库,构建一个能够应对各种反爬措施的强大爬虫系统。Playwright是微软开发的浏览器自动化工具,支持Chromium、WebKit和Firefox,比Selenium更快速、更稳定。

2201_76125261的博客 1311

OC对象与Core Foundation对象的转换

OC对象使用了ARC,自动释放内存,但是CF中的对象没有ARC,必须要手动进行引用计数和内存释放. 两者对象之间的互相转换有三种形式: 1.__bridge: 直接转换,部改变对象的持有状况: id obj = [NSObject new]; cfObject = (_bridge cfObject) obj; //不改变对象持有状况,cf对象不能获得obj的引用. id obc = (_

四夕日 月 1293

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ARC下OC对象和CF对象之间的桥接(bridge)

在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics、Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环境下编译器不会自动管理CF对象的内存,所以当我们创建了一个CF对象以后就需要我们使用CFRel...

chizongtie2212的博客 147

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ARC下 打印引用计数 和 OC对象与CF对象之间的桥接(bridge)

1、打印引用计数         __strong __typeof(weakSelf)strongSelf = weakSelf;         printf("retain count = %ld\n",CFGetRetainCount((__bridge CFTypeRef)(strongSelf))); 2、__bridge的使用 在开发iOS应用程序时我们有时

Linlei的专栏 843

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ARC下OC对象和CF对象之间的架桥

Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架

WflytoC的博客 630

iOS OC类型和C类型相互转换

http://blog.youkuaiyun.com/shencaifeixia1/article/details/8147117 __bridge:不涉及对象所有关系改变 __bridge_transfer:给予 ARC 所有权 __bridge_retained:解除 ARC 所有权 形式: (__bridge type)expression; (__bridge_retained C

mali_xiangzi的专栏 1067

OS OC类型和C类型相互转换

OS OC类型和C类型相互转换 http://blog.youkuaiyun.com/shencaifeixia1/article/details/8147117 __bridge:不涉及对象所有关系改变 __bridge_transfer:给予 ARC 所有权 __bridge_retained:解除 ARC 所有权 形式: (__bridge type)

dadamengyi的博客 482

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(四)

变量作用域结束时,虽然随着持有强引用的变量obj失效,对象随之释放,但由于__bridge_retained转换使变量p看上去处于持有该对象的状态,因此该对象不会被废弃。这是因为由malloc函数分配的内存区域没有被初始化为0,因此nil会被赋值给附有__strong修饰符的并被赋值了随机地址的变量中,从而释放一个不存在的对象。bridge_transfer转换提供与此相反的动作,被转换的变量所持有的对象在该变量被赋值给转换目标变量后随之释放。retained转换可使要转换赋值的变量也持有所赋值的对象。

2301_80095702的博客 1014

iOS开发中的ARC内存管理机制(3)——OC对象和CF对象之间的桥接(Bridge)

利用桥接(Bridge)处理对象所有权的传递...

痴_Pro的博客 1071

iOS之CF和OC之间类型转换

自 Xcode4.2 开始导入ARC机制后,为了支持对象间的转型,Apple又增加了许多转型用的关键字。这一讲我们就来了解其用法,以及产生的理由。 引子 我们先来看一下ARC无效的时候,我们写id类型转void*类型的写法: id obj = [[NSObject alloc] init];void *p = obj; 反过来,当把void*对象变回id类型时,只是简单地如下来写,

四爷的专栏 1万+
上一篇: Objective-C 类型编码
下一篇: 有用的框架
活在生活里
博客等级 码龄11年 94粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值