这个声明创建一个数组还是一个 NSString ?
当我阅读时,我看到了这一点:
static NSString *randomNounList[3];
这是否会生成一个名为 randomNouns
的 NSString
指针数组?
As I was reading I saw this:
static NSString *randomNounList[3];
does that make an array of NSString
pointers called randomNouns
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,这会生成一个由 3 个指向 NSString 的指针组成的数组,您可以将其作为普通数组自由使用。
请记住,与 Objective-C 容器不同,普通数组不保留其元素,您必须自己维护所有内存管理问题(例如,保留字符串以确保不会过早释放它们,并在不需要它们时释放它们) 。
Yes, that makes an array of 3 pointers to NSString and you can freely use it as normal array.
Just remember that unlike objective-c containers plain arrays do not retain their elements and you have to maintain all memory management issues yourself (e.g. retain strings to make sure then won't get deallocated prematurely and release them when you don't need them).
它既不是 NSArray,也不是 NSString——它是一个指向 NSString 的指针的普通 C 数组。它不是一个物体;它是一个物体。它只是一块可以容纳三个指针的内存块。
在我看来,像这样使用带有 Cocoa 对象的 C 数组通常是(但并非总是)一个坏主意。 C 数组在普通 C 中已经够麻烦的了。当您添加 Cocoa 更复杂的内存管理语义时,正确管理所有内容可能会很棘手,除非您将数组包装在类似 NSArray 的接口中 - 如果您这样做,你为什么不直接使用 NSArray 呢?
It is neither an NSArray nor an NSString — it's a plain C array of pointers to NSStrings. It's not an object; it's just a block of memory with space for three pointers.
Using a C array with Cocoa objects like this is usually (but not always) a bad idea IMO. C arrays are troublesome enough in plain C. When you add in the more complicated memory management semantics of Cocoa, it can be tricky to manage everything correctly unless you wrap the array in an NSArray-like interface — and if you're doing that, why aren't you just using an NSArray?