繁体   English   中英

如何将NSArray转换为NSString **

[英]How to convert NSArray into NSString**

我有一个包含NSString对象的NSArray。 我想从这些字符串创建一个NSString **对象。

NSArray * myArray = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
NSString ** myStrings = ??? // an array of NSString*

是否有非malloc解决方案? 我们可以以某种方式在自动释放池中分配myStrings,或者获取myArray中对象属性的句柄并使用它吗?

免责声明 :你不应该这样做。

也就是说,这里是如何从NSArray创建一个NSString指针的C数组,由自动释放的内存支持:

NSArray * myArray = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
NSMutableData * myData = [NSMutableData dataWithLength:(sizeof(NSString *) * myArray.count)];    
NSString ** myStrings = myData.mutableBytes;
for (int i = 0; i < myArray.count; i++) {
    myStrings[i] = myArray[i];
}

从内存管理的角度来看,这是一个糟糕的主意。

每个myStrings[i]值只有在保留myArray时才有效,并且myStrings的值只有在保留myData时才有效。

在ARC下, myArraymyData对象一旦超出范围就会被释放,因此myStrings会在从方法返回后立即指向freed memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM