2

为什么我不能将 NSString[] 粘贴到 NSArray 中?我收到以下错误“ARC不允许将间接指针隐式转换为指向‘id’的Objective-C指针”

这是代码:

NSString *s1, *s2;
NSString *cArray[]={s1, s2};
NSMutableArray *dataArray = [[NSMutableArray alloc] init];
[dataArray addObject:cArray];
4

2 回答 2

3

你不能这样做,因为所有权cArray不能转让。

如果它是一个局部变量,它会在它的作用域结束时消失,给你的可变数组留下一个悬空引用。

即使它是全局的,也会有问题,因为您NSMutableArray不知道如何正确释放 C 数组。

Objective C 想要尽可能地保护你免受这种情况的影响,提供很好的类NSArray来让你的工作更轻松:

NSMutableArray *dataArray = [NSMutableArray array];
NSString *s1 = @"hello", *s2 = @"world";
// You can choose another constructor as you see fit.
NSArray *cArray = @[s1, s2];
[dataArray addObject:cArray];
于 2013-10-07T21:39:12.070 回答
2

NSArray 保存对象。AC 数组不是一个对象,所以你不能把它放在一个 NSArray 中。如果要从 C 数组中创建 NSArray,可以使用arrayWithObjects:count:构造函数。

于 2013-10-07T21:47:01.887 回答