0

以下代码段中的 Parsing 有什么区别。哪些代码段在解析中更快?

NSArray *arr = [[NSArray alloc] initWithObjects:@"Apple",@"Macbook", nil];

NSMutableArray *data = (NSMutableArray *)arr;

(和)

NSArray *arr = [[NSArray alloc] initWithObjects:@"Apple",@"Macbook", nil];

NSMutableArray *data = [NSMutableArray arrayWithArray:arr];
4

2 回答 2

3

您在两个片段中都有相同的错误,您为对象分配内存,然后为数据分配其他内容,这使您丢失了前一个(并且有内存泄漏),例如:

NSMutableArray *data = [[NSMutableArray alloc] init];
data = [NSMutableArray arrayWithArray:arr];

应该

NSMutableArray *data = [NSMutableArray arrayWithArray:arr];

现在对于问题本身:

  1. 第一种情况是个坏主意,你转换了 NSArray,但你不能修改它,因为你并没有真正改变它的类型,只是将它分配给 NSMutaleArray 指针。

  2. 第二种情况将创建一个新的 NSMutableArray,它是可变的,包含 NSArray 的内容,这很酷,您现在可以更改此数组。

于 2012-04-19T17:30:58.350 回答
1

看起来你想要的是:

NSArray *arr = [[NSArray alloc] initWithObjects:@"Apple",@"Macbook", nil];
NSMutableArray *data = [arr mutableCopy];

或者:

NSMutableArray *data = [[NSMutableArray alloc] initWithObjects:@"Apple",@"Macbook", nil];
于 2012-04-19T17:36:28.027 回答