gpt4 book ai didi

ios - NSString和NSMutableString的内存分配

转载 作者:行者123 更新时间:2023-12-01 20:14:35 24 4
gpt4 key购买 nike

我有一个疑问,当我创建一个NSMutableString对象时,它指向两个单独的内存位置,但是当我使用NSString时,它指向了相同的位置。谁能解释一下这背后的逻辑。

 NSMutableString *myString1 = [NSMutableString new];
NSMutableString *myString2 = [NSMutableString new];
NSLog(@"%p",myString1);0x00007fe572416da0
NSLog(@"%p",myString2);0x00007fe5724114a0

NSString *myString3 = [NSString new];
NSString *myString4 = [NSString new];
NSLog(@"%p",myString3);0x10622e470
NSLog(@"%p",myString4);0x10622e470

最佳答案

我将根据使用的内存进行解释。下面我详细介绍了在非ARC情况下这些变量的保留计数

NSMutableString *myString1 = [NSMutableString new];

NSLog(@"String Retain Count: %lu", (unsigned long)[myString1 retainCount]); //String Retain Count: 1

NSString *myString3 = [NSString new];

NSLog(@"String Retain Count: %lu", (unsigned long)[myString3 retainCount]); //String Retain Count: 18446744073709551615

因此,在第二种情况下,它被视为常量字符串。它将您的字符串视为NSConstantString。

关于ios - NSString和NSMutableString的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37045499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com