关于NSString和NSMutableString的retainCount

智能车图像处理去畸变+逆透视教程 图像处理,去畸变与逆透视整合 阅读详情

1. 字符串常量

NSString *s = @"test";

NSLog(@"s:%lx",[s retainCount]); //ffffffffffffffff(即UINT_MAX ( Maximum value an `unsigned int'))

因为"test"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对s如何retain或release。

 

2. stringWithFormat

NSString *s = [NSString stringWithFormat:@"%s", "test"];

NSLog(@"s:%d",[s retainCount]); // 1

使用stringWithFormat创建的NSString为变量,系统会进行引用计数。

 

2. stringWithString

stringWithString这个方法比较特别:它的retainCount取决于它后面跟的string对象

NSString *s1 = [NSString stringWithString:@"test"];

NSString *s2 = [NSString stringWithString:[NSString stringWithFormat:@"test,%d",1]];

NSLog(@"s1:%d",[s1 retainCount]); // 2147483647

NSLog(@"s2:%d",[s2 retainCount]); // 2

可以看到第一个为"常量"对象,其retainCount方法的实现返回的是maxIntValue。

第二个为2,这里也很好理解,也证明了前面说的,这个方法生成的只是一个对另一个对象的引用。一个对象实例,两次的stringWithString,它的retainCount为2,同时都被当前的AutoreleasePool管理。


NSMutableString* myStr3 = [NSMutableString stringWithString:@"string 3"];

输出1,有引用计数


【项目典型案例】-2-任意帧/特定帧CAN唤醒对ECU首帧/启动时间的影响 任意帧/特定帧CAN唤醒对ECU启动时间的影响 阅读详情

相关推荐

WRF实战:自定义Vtable解析ECMWF海温数据的关键步骤与技巧

本文详细介绍了在WRF模型中自定义Vtable以解析ECMWF海温数据的关键步骤与技巧。通过解剖GRIB文件、编写自定义Vtable条目以及配置METGRID.TBL,解决了ECMWF数据与WRF模型对接的难题,为海洋气象和台风模拟研究提供了高精度数据输入方案。

weixin_29279101的博客 335

关于NSString的retainCount的各种结果原因

1. 字符串常量 NSString *s = @"test"; NSLog(@"s:%d",[s retainCount]); // -1或2147483647(即UINT_MAX ( Maximum value an `unsigned int')) 因为"test"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对s如何retain或release。   2. string

站在巨人的肩膀上 7893

从驱动编译到数据传输:RK3588与FPGA的PCIe通信实战解析

本文详细解析了RK3588与FPGA通过PCIe通信的实战过程,涵盖驱动编译、数据传输及性能优化等关键步骤。通过XDMA驱动实现高效DMA传输,适用于视频处理、数据采集等高性能场景,帮助开发者快速掌握嵌入式系统中的PCIe通信技术。

weixin_29214691的博客 522

iOS中的NSString引用计数问题(-1和整数最大值)

//这里的string是常量区没有引用计数 /* NSString 类下有许多类触,每个类触有不同的功能,比如:[NSString stringWithFormat:@"lanou"]当@"lanou"小于某个长度时是存在常量区,返回整数的最大值,当@"lanoufdsfdsf"是在堆区开辟空间 所以有引用计数,当[NS...

weixin_30539835的博客 171

工业级RFID读写器|识读器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯实例方案

本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。

华翔天诚科技 4371

手把手教你用西门子博图V18配置阿特拉斯PF6000拧紧枪PN通讯(附完整GSD文件与ToolsTalk配置文件)

本文详细介绍了如何使用西门子博图V18配置阿特拉斯PF6000拧紧枪的PN通讯,包括硬件连接、网络参数规划、ToolsTalk软件配置及博图工程设置。通过完整的GSD文件和配置文件,帮助工程师快速实现高精度拧紧设备与PLC的高效通讯,适用于汽车装配和电子制造等工业自动化场景。

weixin_42662293的博客 601

Objective-C内存管理总结〜CC专版

之前写过类似的文章,这篇以做总结,希望能帮助刚上船的兄弟。^_^iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。当然,也不能拿JAVA虚拟机中的全自动化GC来比〜一,引用计数是实例对象的内存回收唯一参考引用计数(retainCount)是Objective-C管理对象引用的...

sdfisdf的专栏 228

ubuntu18.04 升级Ubuntu 20.04

Ubuntu 18.04升级20.04指南:首先备份重要数据,更新当前系统并检查新版本可用性(sudo do-release-upgrade -c)。确认升级后执行sudo do-release-upgrade,按提示完成操作。升级过程需耐心等待,完成后重启系统。注意:升级前务必备份数据,确保系统为最新版本,以降低风险。升级后即可使用Ubuntu 20.04系统。

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1058

IOS内存管理概述

内存管理机制和原则,循环引用

专注于苹果IOS开发和最新资讯 653

软考高级-系统架构设计师 论文范文参考(一)

系统架构设计师 论文参考

片言可决讼,半纸能缚龙 4341

解决:请求的资源[/xxx/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

解决:请求的资源[/xxx/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

念兮为美 1万+

iOS开发之OC内存管理(一)

本文主要介绍在非ARC环境下OC管理内存的方式,以及property的属性参数的含义。内存释放的原理。

shxwork的博客 531

RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络

本文记录的是利用颈部结构优化RT-DETR的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 2228

IOS开发之关于NSString和NSMutableString的retainCount

1. 字符串常量 NSString *s = @"test"; NSLog(@"s:%lx",[s retainCount]); //ffffffffffffffff(即UINT_MAX ( Maximum value an `unsigned int')) 因为"test"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对s如何retain或release。 2. str...

weixin_30278311的博客 76

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IOS开发(41)之关于NSString和NSMutableString的retainCount

1. 字符串常量 NSString *s = @"test"; NSLog(@"s:%lx",[s retainCount]); //ffffffffffffffff(即UINT_MAX ( Maximum value an `unsigned int')) 因为"test"为字符串常量,系统不会收回,也不会对其作引用计数,即使我们对s如何retain或release。

Developer_Zhang的专栏 1338

精雕软件(JDpaint) 5.5 绿色版

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

二十三天

内存管理:copy,拷贝的时候不会对引用计数器作出任何改变,要遵循NSCopying协议,实现NSCopying协议中的方法。因为是拷贝,所以定义的成员属性是等于self->成员属性。 用assign也不会加1; NSString类型的retainCount为-1  (NSString 存储的内容是变量(不可以被改变)); 内存管理ARC:(不用空间就释放掉) strong----

ZHANG_FD的博客 318

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Objective-C中的内存管理

在编程语言中是少不了对内存的管理的,内存对于计算机来说是宝贵的资源,所以对使用不到的资源进行回收是很有必要的。OC中使用引用计数和垃圾回收来管理内存,在OC中为每个对象分配一个引用计数器,当对象刚刚被创建时其初始值为1,当有某段代码需要访问一个对象是时,会将该对象的引用计数器加1(通过retain来实现);当访问一个对象结束时,会将该对象的引用计数器减1(通过release来实现)...

weixin_30390075的博客 60

NSString,NSMutableString使用retain, copy理解

NSString 应用 retain 还是 copy?

LIN1986LIN的专栏 3210

记录一次对NSString和NSMutableString的引用计数操作

记录一次对NSString和NSMutableString的引用计数操作 先将项目变成MRC模式(target->build Settings) 加入下面代码 - (void)viewDidLoad { [super viewDidLoad]; NSString *str0 = [[NSString alloc] init]; NSMutableStri...

appleLg的专栏 551

为什么用copy for NSString属性?

当你声明一个NSString属性最好使用copy而不是strong。事实上这适用于任何不可变类,符合NSCopying协议像NSNumber NSArray,NSSet等等。所有我提到的这些类也有一个可变的版本。你想使用copy,因为NSString 属性可以传递NSString或NSMutableString实例。如果你传递NSMutableString实例那么这意味着字符串的值可能后面会改变。让

Dwyane_Coding 533

黑马程序员——iOS面试小题集锦——黑马 ios 技术博客

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、Object-C有多继承吗?没有的话用什么代替? cocoa 中所有的类都是NSObject 的子类 多继承在这里是用protocol 委托代理 来实现的 你不用去考虑繁琐的多继承 ,虚基类的概念. ood的多态特性 在 obj-c 中通过委托来实现.   2、

黑马程序员杜梦秋的技术博客专栏 909

内存管理(5) - 关于retainCount在不同场合输出值不符合预期的分析

1、NSString、NSMutableString 和 NSArray、NSMutableArray void x(void) { NSString *str = [[NSString alloc]init]; //定义初始一个对象 //NSArray *str = [[NSArray alloc]init]; //这句的下面的结果也是一样的 NSLog(@"st...

swel的博客 278

iOS NSString的内存情况

在iOS 的内存管理里面,NSString算是一个比较特殊的情况,它是一个OC对象,可是它的内存管理跟它指向的内容有关。 主要分两种: (1)NSString 指向一个常量字符串,即在编译时已经确定的值,那么NSString就不受内存管理 (2)除开第一种情况,那么NSString就跟其他OC对象一样,受retainCount控制。  测试代码NSString *str11 = @"dsf

QQQ274628593的博客 2196

关于深复制和浅复制

1.先看两者的区别 深复制(深拷贝,内容拷贝,deep copy) 源对象和副本对象是不同的两个对象 源对象引用计数器不变,副本对象计数器为1(因为是新产生的) 本质是:产生了新的对象 浅复制(浅拷贝,指针拷贝,shallow copy) 源对象和副本对象是同一个对象 源对象(副本对象)引用计数器+ 1,相当于做一次retain操作 本质是:没有产生新的对象 ...

aixian5179的博客 85
上一篇: NSString NSCFString isMemberOfClass 遇到的相关的问题
下一篇: 文本输入 有效性检测 相关
trandy
博客等级 码龄17年 79粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值