我将.h文件中的NSArray
对象声明为
@property (nonatomic, assign) NSArray *scnArray;
在- (void)viewDidLoad
下的.h文件中,我创建了三个不同的NSArray
对象作为
NSArray *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
[scnArray arrayByAddingObjectsFromArray:obj2];
[scnArray arrayByAddingObjectsFromArray:obj3];
如果我从任何其他功能访问这个scnArray
NSArray *caseArray = [scnArray objectAtIndex:index];
//索引将为0、1、2…
我得了BAD_ACCESS_ERROR
。这里的问题是什么?我如何纠正使用它?
试试这个:
NSArray *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj2];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj3];
arrayByAddingObjectsFromArray:
函数将数组B中的所有对象添加到数组A中,并返回结果(=同时包含A和B元素的数组)。
所以,你应该简单地得到这个结果…:-)
重要信息:scnArray
必须是NSMutableArray
数组,而不是NSArray
(它正在更改,对吗?);所以一定要编辑那个部分。。。
另外:NSArray *caseArray = [scnArray objectAtIndex:index];
-这没有任何意义。将数组设置为scnArray
的ELEMENT?它不包含数组,对吧?它只包含这些数组的元素(我们添加的那些)。。。
arrayByAddingObject:
不会将新对象添加到接收器中,而是创建一个全新的数组并返回它
scnArray = [[NSArray alloc] initWithObjects: obj1, obj2, obj3, nil];
不要忘记,如果您不使用ARC或GC,那么所有这些数组都需要在某个时候发布。