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接口实现及漏采/尖峰/换表等质量处理,帮助工程师构建可靠的电量数据开放链路。 阅读详情

相关推荐

Vue中实现word文档渲染、在线编辑、保存

Vue3对word文档进行渲染、编辑、保存。word转成html,html转成word

h18749849699的博客 1329

NSString特性分析学习

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

bluewindaa的专栏 503

零基础搭建机械零件检测系统:基于YOLOv8的PySide6可视化开发全攻略

本文详细介绍了如何从零开始搭建基于YOLOv8的机械零件检测系统,涵盖环境配置、数据集准备、模型训练优化及PySide6可视化界面开发全流程。通过实战案例展示YOLOv8在工业检测中的高效应用,帮助开发者快速实现自动化零件检测解决方案。

weixin_28455801的博客 309

关于 NSString 的引用计数问题

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

ChopSticksWL的博客 1976

<硬件设计> 阻抗设计(二) 使用Si9000计算阻抗

阻抗设计(二) 使用Si9000计算阻抗

杰克拉力船长个人博客 1万+

海康摄像头RTSP流延迟优化实战:从VLC到OpenCV的5种方案对比与性能调优

本文针对海康摄像头RTSP流的高延迟问题,深入剖析了延迟根源,并系统对比了从VLC、OpenCV到海康官方SDK、FFmpeg及硬件加速等五种主流方案的性能表现。重点分享了缓冲区设置、协议优化、多线程架构与硬件解码等实战调优技巧,旨在帮助开发者将视频流延迟从秒级优化至毫秒级,满足工业检测、安防监控等高实时性场景需求。

hh234的博客 806

OC中NSString对象的引用计数

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

shisanshuno1的专栏 732

Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)

Google账号找回通用方法【尤其是知道账号密码仍无法登录和找回的】普通找回注意:适用于常用谷歌账户的设备和网络情况下无法使用手机或辅助邮箱验证码进行密码找回特殊找回方法注意;适用于1.新的设备以及网络环境(包括由于非正常原因导致设备系统以及应用信息变更)2.没有开启辅助验证(手机/邮箱)3.知道账号密码但无法登录或找回。通过申诉进行找回 普通找回 注意:适用于 常用谷歌账户的设备和网络情况下 无法使用手机或辅助邮箱验证码进行密码找回 通过恢复页面进行恢复 https://accounts.google

极客代码-极致生活 23万+

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

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

bolu的专栏 1370

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2246

人工智能在文学领域的应用:创作无限可能的智能作家

人工智能在文学领域的应用:创作无限可能的智能作家 作者:禅与计算机程序设计艺术 1. 背景介绍 人工智能技术近年来飞速发展,在各个领域都有广泛应用。文学创作作为人类最高级的智力活动之一,也逐渐受到人工智能技术的影响和改变。随着自然语言处理、生成式模型等人工智能

AI天才研究院 1110

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

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

TuGeLe的博客 1422

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6844

Swift开发之String 还是 NSString

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

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 830

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

No End To Struggle 716

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

NSString与奇怪的retainCount

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

weixin_30289831的博客 65

老版QQ原生表情gif动态

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

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

余额充值