gpt4 book ai didi

iphone - retainCount 显示 MaxInt

转载 作者:可可西里 更新时间:2023-11-01 03:35:40 26 4
gpt4 key购买 nike

在尝试打印对象的 retainCount 后,我​​得到 2147483647。为什么会得到这样的结果?应该是 1,不是吗?

NSString *myStr = [NSString new];
NSUInteger retCount = [myStr retainCount];
NSLog(@"refCount = %u", retCount);

2011-09-08 17:59:18.759 Test[51972:207] refCount = 2147483647

我使用 XCode 4.1 版。尝试编译器 GCC 4.2 和 LLVM GCC 4.2 - 结果相同。垃圾收集选项设置为不受支持。

最佳答案

NSString 在内存管理方面有些特殊。字符串文字(类似于 @"foo")实际上是单例,每个具有相同内容的字符串都是同一个对象,因为无论如何都无法修改。由于 [NSString new] 总是创建一个无法修改的空字符串,您将始终获得无法释放的相同实例(因此高 retainCount)。

试试这个片段:

NSString *string1 = [NSString new];
NSString *string2 = [NSString new];
NSLog(@"Memory address of string1: %p", string1);
NSLog(@"Memory address of string2: %p", string2);

您会看到这两个字符串具有相同的内存地址,因此是相同的对象。

关于iphone - retainCount 显示 MaxInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350258/

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