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

Objective c 此声明是否创建数组或NSString?,objective-c,nsstring,nsarray,Objective C,Nsstring,Nsarray,当我阅读时,我看到: static NSString *randomNounList[3]; 这是否构成一个名为randomnowns的NSString指针数组?是的,它构成一个指向NSString的3个指针数组,您可以将其作为普通数组自由使用 请记住,与objective-c容器不同,普通数组不保留其元素,您必须自己维护所有内存管理问题(例如,保留字符串以确保不会过早释放,并在不需要时释放它们) 它既不是NSArray,也不是NSString——它是指向NSString的指针的普通C数组。它

当我阅读时,我看到:

static NSString *randomNounList[3];

这是否构成一个名为
randomnowns
NSString
指针数组?

是的,它构成一个指向NSString的3个指针数组,您可以将其作为普通数组自由使用


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

它既不是NSArray,也不是NSString——它是指向NSString的指针的普通C数组。它不是一个物体;它只是一块内存,有三个指针的空间


在我看来,将C数组与Cocoa对象一起使用通常(但并非总是)是一个坏主意。C数组在普通C中已经够麻烦的了。当您添加Cocoa更复杂的内存管理语义时,要正确管理所有内容可能会很棘手,除非您将数组包装在类似NSArray的接口中—如果您这样做,你为什么不使用NSArray呢?

呵呵,说得好。你知道的,非常感谢你分享你的想法。我正在学习编程,因此我遇到了不同的作者,他们有不同的代码选择风格。我认为使用上面的代码更简洁。多亏了你,我现在知道我应该避开他们。