iOS开发-NSString类簇探究

本文探讨了Objective-C中NSString类簇的复杂性,包括直接赋值、initWithFormat创建、NSMutableString及其内存管理。通过实验揭示了__NSCFConstantString、NSTaggedPointerString和__NSCFString的不同特性和使用场景,指出NSPlaceholderString和NSPlaceholderMutableString作为占位类簇的角色。
摘要由CSDN通过智能技术生成

前言 

在 Objective-C 的 Foundation 框架中 NSString 对象是很复杂的存在,使用了抽象工厂模式,因此 NSString 其实是多个类簇组合成的抽象类,不同的创建方式以及不同的字符长度都可能影响最终得到的类簇类型,今天就来研究一下 NSString 下复杂的类簇。

为了观察 NSString 的内存管理情况,选择关闭 ARC 使用 MRC 来进行测试,以观察其引用计数等状况。

#define SSLog(_var) ({ NSString *name = @#_var; NSLog(@"\n%@ : %@ : %@ -> %p : %lu", name, _var, [_var class], _var, [_var retainCount]); })

1、直接赋值创建

NSString *str  = @"";
NSString *str1 = @"11";
NSString *str2 = @"2222";
NSString *str3 = @"333333333";
NSString *str4 = @"4444444444444444";
NSString *str5 = @"sfsdfnsdfn";
NSString *str6 = @"打算多久但是";
log:
str  :  : __NSCFConstantString -> 0x100729550 : 18446744073709551615
str1 : 11 : __NSCFConstantString -> 0x100729570
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值