方法retainCount
应该返回一个无符号整数。
那么为什么呢?[@"Hi" retainCount]
返回-1?
简单的答案是因为@"Hi
" 是一个字符串文字,它将始终位于二进制可执行映像中,并且永远不会“消失”,因此保留/释放没有效果,您会看到UINT_MAX
(打印出来时看起来像 -1,例如用 %d 签名)。 (参见 Pete Kirkham 关于具有这些语义的 NSObjects 的回答)。
除此之外,了解虽然@“Hi”的行为就像一个NSString*
,它实际上是编译器创建的类的实例CFConstantString
(或者可能是 NSConstantString,我的调试器不同意某些文档),它包装文字字符串数据并为您提供 NSString* 接口。但编译器知道这些字符串很特殊并且永远无法清理,因此它们的保留计数始终为 UINT_MAX (-1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)