我有这个数组Array *array = [@"string1", @"string2", @"string3", @"string4"];
我想获取每个字符串对象并分配给动态创建的NSString对象。
有可能吗?
答案 0 :(得分:0)
我不太确定你要求的是什么。
你可以这样:
typedef struct Array_s {
__strong id *values;
int count;
} Array;
#define array(values) ({ id _v[] = { values }; int _c = sizeof(_v) * sizeof(*_v); int *_cpy = malloc(sizeof(id) * _c); memcpy(_cpy, _v, sizeof(id) * _c); Array _a; _a.count = _c; _a.values = _cpy; _a; })
#define destroy(array) ({ free(array->values); })
你可以这样使用:
Array a = array(@"This", @"Is", @"A", @"Test");
for (int i = 0; i < a.count; i++)
{
NSLog(@"%@", a.values[i]);
}
destroy(a);
编辑:看来我的问题读错了。
NSArray *deepCopyArray(NSArray *input)
{
id copiedValues[input.count];
for (int i = 0; i < input.count; i++)
{
copiedValues[i] = [[input objectAtIndex:i] copy];
}
return [NSArray arrayWithObjects:copiedValues count:input.count];
}