此声明是否创建数组或NSString?

时间:2011-06-08 21:10:58

标签: objective-c nsstring nsarray

在我读书的时候,我看到了这一点:

static NSString *randomNounList[3];

是否会生成一个名为NSString的{​​{1}}指针数组?

2 个答案:

答案 0 :(得分:3)

是的,这会产生一个指向NSString的3个指针的数组,你可以自由地将它作为普通数组使用。

请记住,与objective-c容器不同,普通数组不保留其元素,并且您必须自己维护所有内存管理问题(例如,保留字符串以确保不会过早释放,并在不执行时释放它们需要他们)。

答案 1 :(得分:1)

它既不是NSArray也不是NSString - 它是指向NSStrings的普通C数组指针。这不是一个对象;它只是一块内存块,有三个指针的空间。

使用像这样的Cocoa对象的C数组通常(但并非总是)IMO是一个坏主意。在C中,C数组很麻烦。当你添加Cocoa更复杂的内存管理语义时,除非你将数组包装在类似NSArray的接口中,否则管理所有内容可能会很棘手 - 如果你这样做,你为什么不只是使用NSArray?