NSString 特性分析

14、基础工具包快速指南 本文详细介绍了 Objective-C 中的基础工具类,包括 NSMutableString 与 NSString 的关系及使用,以及 Cocoa 提供的集合类 NSArray、NSMutableArray 和 NSDictionary。内容涵盖了创建、操作、遍历数组和字典的方法,并对不同集合类的特性进行了对比。此外,文章还提供了实际开发中的应用案例,如构建用户界面数据模型、数据处理与分析、动态配置管理等。最后总结了集合类的最佳实践,帮助开发者合理选择和使用集合类,提高代码质量和性能。 阅读详情

原作者链接 http://www.360doc.com/content/15/0304/17/9200790_452525916.shtml


打印宏定义:
#define TLOG(_var) ({NSString *name = @#_var; NSLog(@"%@:%@->%p : %@",name ,[_var class],_var,_var);})
分别代表:字符串isa指针,堆地址,字符串内容

NSString的三种初始化方法:

    NSString *test0 = @"abc"; TLOG(test0);
   
NSString *test1 = [NSString stringWithString:@"abc"];  TLOG(test1);
    NSString *test2 = [NSString stringWithFormat:@"abc"]; TLOG(test2);

打印结果:
2015-05-14 12:37:53.268 testView[2776:1053652] test0:__NSCFConstantString->0x101bc7068 : abc
2015-05-14 12:37:53.268 testView[2776:1053652] test1:__NSCFConstantString->0x101bc7068 : abc
2015-05-14 12:37:53.268 testView[2776:1053652] test2:__NSCFString->0x7fad2162e1b0 : abc

由打印结果看出前面两种方法创建的都是__NSCFConstantString对象,并指向同一块地址。其实这两个方法是等效的,第一种方式只是简写。使用前两种方法创建的NSString对象只要内容相同他们的内存地址都相同。即NSString指针都指向同一块内存。
第三种初始化方法是单独开辟地址空间的创建的对象时__NSCFString,用这个方法即使创建了内容相同的字符串对象它们的内存地址都是不相同的。

 NSMutableString *m_test0 = [NSMutableString stringWithFormat:@"abc"]; TLOG(m_test0);

打印结果:
m_test0:__NSCFString->0x7fe4887162d0 : abc
可变字符串的初始化开辟新的内存。 

用电量数据分享实战:从数据字典到接口开放的数据管道设计 在能源管理系统中,时序数据的高效共享是支撑负荷预测、储能调度与分时结算的基础。数据接口的质量直接决定下游分析的可信度,而数据字典、采集协议、清洗规则和发布方式共同构成完整的数据管道。本文以用电量数据分享为例,梳理字段定义、15分钟粒度、Modbus与DL/T 645采集、FastAPI接口实现及漏采/尖峰/换表等质量处理,帮助工程师构建可靠的电量数据开放链路。 阅读详情

相关推荐

深入探索 ClickHouse:性能优化之道

在大数据处理的广袤天地里,ClickHouse 宛如一颗璀璨的明星,以其卓越的性能为海量数据的存储与查询提供了强大助力。但要想让 ClickHouse 发挥出极致效能,性能优化至关重要。今天,就让我们一同深入探寻 ClickHouse 的性能优化之路。

arnold66的专栏 1547

NSString特性分析学习

我们都知道NSString是一个Objective-C的类,但是我们有时发现它的对象在内存管理上貌似和其他的对象有一些区别。比如有时你会发现对一个NSString进行copy操作时,它还是原本的对象,实际上并未拷贝对象。本博客就来研究下这个问题。 1.NSString内存管理特性分析 1.1 准备 为了方便测试,我先写了个宏,用来打印NSString的isa、内存地址、值、ret

bluewindaa的专栏 503

工业组态软件Intouch(单机版)入门{第一篇}

通俗来讲Intouch就是一个能将PLC里的信号显示在画面上的软件。

weixin_41571357的博客 1万+

关于 NSString 的引用计数问题

在 OC 语法的 MRC 手动引用计数的模式下,需要我们手动进行内存管理,即需要我们 在适当的地方添加 retain 和 release 方法   但是 NSString 是个例外,我们可以通过多种方式创建字符串并打印其 retain 的计数     NSString *str1 = @"aaa";     NSLog(@"%lu---%p",(unsigned long)

ChopSticksWL的博客 1976

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了基于YOLOv11的YOLOFuse多模态融合技术,重点探讨了RGB与红外线(IR)协同检测的实现原理与实战应用。文章详细介绍了双流架构与数据级、特征级、决策级三种融合策略,并通过实战案例展示了其在低光照、复杂环境下显著提升检测精度与鲁棒性的优势,为全天候安防、自动驾驶等场景提供了有效的技术解决方案。

weixin_29041195的博客 650

华为OD机试 - 小扇和小船的数字游戏 - 二进制(Python/JS/C/C++ 2024 C卷 200分)

二进制表示:任何数 n 的二进制表示中,要找到下一个有相同数量的1的数,我们需要在最低位的0后面的最低位的1进行操作。右侧交换法则:找到右侧的第一个0,位于第一个1的左边,将这个0变成1(提升这个位),并将这个1变成0(下移这个位)。调整尾部1:为了得到最小的数,将所有低于已交换的1的位重置,使得所有1尽可能靠右。

学Java,找哪吒 1162

OC中NSString对象的引用计数

废话不多说,先上图NSString对象的retainCount是一件很蛋疼的事情一,先看NSString对象的构造方法,通过initWithString或者stringWithString构造的,retainCount都为-1.二,通过allocWithFormat或者stringWithFormat构造的NSString对象又分为三种情况,如果拼接上的字符串为汉语字符串,retainCount为...

shisanshuno1的专栏 732

【Burp入门第三十三篇】BurpSuite+Proxifier安装配置,实现微信小程序抓包

本文介绍Burp+Proxifier安装配置,实现微信小程序抓包

等风来 5873

(类簇)NSString,NSArray,NSNumber等类的继承问题

问题引入,我想给NSString类扩展一些新的方法。在Objective-C中可以有两种方法,一是继承,二是类别。 本文先不讨论类别,我们用继承的方法试一下: [c] view plain copy print?@interface StringEx : NSString  - (void)myFunc;  @end    @implementation StringEx  - (void)myFu

bolu的专栏 1370

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

读懂 SAP Fiori Administration Catalogs:从管理员入口、权限编排到 Spaces 和 Pages 的落地实践

SAP Fiori 管理员目录的核心价值在于为系统配置提供标准化入口,解决权限与展示分离的问题。随着 SAP_UI 7.55 版本更新,SAP_FLP_ADMIN 角色整合了关键管理工具(如 Launchpad Designer、Content Manager),并通过 Business Catalog 和 Space 的协同作用,确保管理员既能访问配置工具,又能直观查看相关功能入口。项目实施中需注意配置层级(系统级/客户端级)的选择,以及多人协作时的数据同步问题,以提升交付效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

iOS中对于NSString变量引用计数的分析

该篇博客主要讨论在Objective-C中对于NSString变量的引用计数的不同处理。 为了在测试中打印方便,我们可以简单的定义一个宏: #define MDMLog(str) ({NSString *name = @#str; NSLog(@"%@-->%@ %p, %zd", name, [str class], str, [str retainCount]);}) 以下内容...

TuGeLe的博客 1422

efm32 入门.pdf

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

Swift开发之String 还是 NSString

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!既然像 String 这样的 Swift 的类型和 Foundation 的对应的类是可以无缝转换的,那...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 830

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NSString属性什么时候用copy,什么时候用strong?

我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy。那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子。 示例 我们定义一个类,并为其声明两个字符串属性,如下所示: @interface TestStringClass () @property (nonatomic, strong)

No End To Struggle 716

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NSString与奇怪的retainCount

话题从sunnyxx的《黑幕背后的Autorelease》开始 文章开头有个小例子 __weak id reference = nil; - (void)viewDidLoad { [super viewDidLoad]; NSString *str = [NSString stringWithFormat:@"sunnyxx"]; // str是一个autorelease...

weixin_30289831的博客 65

NSString的内存管理之 __NSCFConstantString、NSTaggedPointerString、__NSCFString

&gt; 转自:http://skyfly.xyz/2015/11/08/iOS/NSString%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/  by skyfly   在 Objective-C 的 Fondation 框架中 NSString 对象是很复杂的存在,各种方式创建以及不同长度的字符串都会影响 NSString 对象在内存中所处的...

王学森的专栏 6886

iOS: NSString内存管理探究

本文主要包括NSString的内存管理问题,按照string的初始化方法来分析。还包括使用__weak后的影响 在我们所认识的内存管理的规则下看下面的代码 NSObject * __weak ob = [[NSObject alloc] init]; NSLog(@"%@",ob); 输出应该是null才对,但是最近发现了NSStrin...

weixin_34190136的博客 186

iOS之copy、strong使用,block特性

身边一同事,我印象在过去三个月,有两次因为使用“copy”修饰UIKit控件的属性,导致程序崩溃。他还一本正经的说我以前一直使用copy。 好了,到这里我们就不得不说说什么时候使用copy。我的印象中,只有两处使用了copy,即修饰NSString类型与block,其他的都是使用strong关键字修饰。 说到这里,我们先来说说NSString类型,我在创建的NSString类...

weixin_30603633的博客 185

OC的copy与mutableCopy剖析(copy篇)

提示:OC中的字符串有NSString(不可变)和NSMutableString(可变)两类,其中后者是前者的子类。本文通过分析不同种类字符串的内存地址以及对象方法得出copy、mutableCopy的相关特性copy篇: 我们知道一个NSString类型的字符串可能会位于内存的常量区,堆区或者棧区(详情请参考博文Mac下NSString(不可变字符串)内存分析) 字符串str1,str2,

筱锐 832

深浅拷贝

1 // NSArray *arr = [NSArray arrayWithObjects:@"111",@"222",@"333", nil]; // NSString *str111 = @"111"; //内存地址1 // NSString *str222 = [NSString stringWithForma

450

NSString的特性

NSString特性分析学习 我们都知道NSString是一个Objective-C的类,但是我们有时发现它的对象在内存管理上貌似和其他的对象有一些区别。比如有时你会发现对一个NSString进行copy操作时,它还是原本的对象,实际上并未拷贝对象。本博客就来研究下这个问题。 1.NSString内存管理特性分析 1.1 准备 为了方便测试,我先写了个宏,用来打印NSString的is

u011194397的专栏 477

ARC & MRC下string内存管理策略探究

下面就让我们一起看看NSString和NSMutableString在MRC下执行retain,copy,mutableCopy,以及ARC下不同的修饰__weak, __strong修饰赋值究竟发生了什么。   一、验证代码如下:  testStringAddress   代码中最开始定义了两个int型的变量,主要是为了打印出当前函数的栈地址,顺便验证了一下内存中栈是从高

qq_33583602的博客 410

两串电池被动均衡方案设计:MP2642GR-Z与MKV46F128VLH16实战

电池均衡是储能与备用电源系统中保障串联电芯一致性的关键技术,其原理是通过耗散或转移高电压电芯能量来缩小电压差,从而提升电池组可用容量与安全性。被动均衡以电路简单、可靠性高的优势,在小型两串架构中应用广泛。基于MP2642GR-Z电池管理芯片与MKV46F128VLH16微控制器的方案,实现了电压采样、均衡开关驱动与迟滞控制策略的协同,适用于便携式备用电源、通信基站后备电池等场景。均衡电阻选型、采样精度保障与温度降额是工程落地的核心要点。

weixin_33824363的博客 168
上一篇: 自定义控件-UIControl
下一篇: 深入对象的copy和mutableCopy
joneOS
博客等级 码龄12年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值