如何将 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 下,myArray
和 myData
对象将在超出范围后立即释放,因此 myStrings
将尽快指向已释放的内存从方法返回。
我有一个包含 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
将尽快指向已释放的内存从方法返回。