为什么我不能将 NSString[] 粘贴到 NSArray 中?我收到以下错误“ARC不允许将间接指针隐式转换为指向‘id’的Objective-C指针”
这是代码:
NSString *s1, *s2;
NSString *cArray[]={s1, s2};
NSMutableArray *dataArray = [[NSMutableArray alloc] init];
[dataArray addObject:cArray];
为什么我不能将 NSString[] 粘贴到 NSArray 中?我收到以下错误“ARC不允许将间接指针隐式转换为指向‘id’的Objective-C指针”
这是代码:
NSString *s1, *s2;
NSString *cArray[]={s1, s2};
NSMutableArray *dataArray = [[NSMutableArray alloc] init];
[dataArray addObject:cArray];
你不能这样做,因为所有权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];
NSArray 保存对象。AC 数组不是一个对象,所以你不能把它放在一个 NSArray 中。如果要从 C 数组中创建 NSArray,可以使用arrayWithObjects:count:
构造函数。