我刚刚遇到了一个由同事写的代码,我以前从未在Obj-C中看过这个代码。它看起来很糟糕,我想改变它,但它似乎有效(应用程序按预期工作),我甚至不知道该改变它。
NSString **stringArray= new NSString *[numberOfStrings];
这样好吗? NSAtrings的NSArray会更有意义吗?
编辑:为了从内存中正确释放阵列,是否需要进行release
次呼叫?目前,我看到的只是delete [] stringArray;
。
编辑2:这似乎从内存中正确删除了数组:
for (int i=0; i < numberOfStrings; i++)
{
[stringArray[i] release];
}
delete [] stringArray;
答案 0 :(得分:4)
对于没有C背景的人来说,使用NSArray
可能更容易辨认,这只是一个充满NSString*
的普通旧C数组,完全有效但与NSArray
实例完全不同
两者都有意义,但是如果该数组的用户期望使用C风格的数组而不是NSArray
实例,那么可能会涉及很多重构。
答案 1 :(得分:3)
他正在使用Objective-C ++(您应该能够在右侧面板上的'文件类型'中验证xcode4中的文件)。
new
关键字会创建一个新的(NSString *)数组,其大小为numberOfStrings
。
要回答您的问题,NSArray
很可能更容易管理,特别是如果代码上有不同的开发人员。要使用C ++数组,可能存在性能问题,但这取决于该代码的上下文。