[英]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下, myArray
和myData
对象一旦超出范围就会被释放,因此myStrings
会在从方法返回后立即指向freed memory。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.