retainCount
方法应该返回一个无符号整数。
那为什么 [@"Hi"retainCount]
返回 -1?
最佳答案
简单的回答是,因为@"Hi
"是一个字符串文字,它会一直坐在二进制可执行镜像中,永远不会“消失”,因此保留/释放有没有效果,您会看到 UINT_MAX
(打印出来时看起来像 -1,例如用 %d 签名)。 (请参阅 Pete Kirkham 关于具有这些语义的 NSObject 的回答)。
除此之外,知道虽然@"Hi"的行为类似于 NSString*
,但它实际上是类 CFConstantString
的编译器创建实例(或者可能NSConstantString,我的调试器不同意某些文档),它包装了文字字符串数据并为您提供了 NSString* 接口(interface)。但是编译器知道这些字符串是特殊的并且永远不会被清理,因此它们将始终具有 UINT_MAX (-1) 的 retainCount
关于objective-c - 为什么发送 retainCount 到 @"Hi"返回 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014667/