【发布时间】:2012-01-12 22:20:24
【问题描述】:
我刚刚遇到了由同事编写的一行代码,而我以前从未在 Obj-C 中看到过这种情况。它看起来很糟糕,我想更改它,但它似乎可以正常工作(应用程序按预期运行),我什至不知道要更改为什么。
NSString **stringArray= new NSString *[numberOfStrings];
这样好吗? NSString 的 NSArray 会更有意义吗?
编辑:为了从内存中正确释放数组,是否需要任何 release 调用?目前,我看到的只有delete [] stringArray;。
编辑 2:这似乎正确地从内存中删除了数组:
for (int i=0; i < numberOfStrings; i++)
{
[stringArray[i] release];
}
delete [] stringArray;
【问题讨论】:
-
严格来说应该是Objective-C++吧?
-
假设这不是我见过的最漂亮的解决方案。 NSString 的 NSArray 在 Objective C 中更有意义,使用 NSArray 的代码也可以很好地与 ARC 配合使用。
-
它不是 Objective-C++,它只是一个
NSString指针的C风格数组。与 C++ 无关。 -
@BenS C 或 Objective-C 中的“
new”是什么?我一定是落伍了……虽然得到的type是一样的,malloc/free和new/delete必须正确配对。 -
这是 C、C++ 和 Objective-C 的混合体。你应该问问你的同事他们写这样的理由是什么。也许你办公室里有某种奇怪的指导方针?
标签: iphone objective-c nsstring nsarray