常量 NSString 分配在哪里?
我知道常量 CString 是静态分配的,而不是在堆上分配的。
我还注意到常量 NSStrings 具有无限的保留计数。常量 NSString 也是静态分配的,而不是在堆上分配吗?
I understand that constant CStrings are allocated statically, rather than on the heap.
I also noticed that constant NSStrings have an infinite retain count. Does it hold true that constant NSStrings are also allocated statically, rather than on the heap?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
常量 NSString 属于 NSConstantString 类,因此就像 lisp 中的原子一样;他们闲逛。 ->
NSConstantStrings
是静态分配的。 也就是说,如果您在代码中的两个不同位置使用@"cow"
,它们将引用非常同一个对象。NSConstantStrings
甚至具有保留计数的原因是因为它们继承自NSObject
。Constant NSStrings are of class
NSConstantString
, and thus act like atoms in lisp; they hang around. ->NSConstantStrings
are allocated statically. That is, if you use@"cow"
in two separate places in your code, they will be referencing the very same object.The reason why
NSConstantStrings
even have a retain count is because they inherit fromNSObject
.