我想知道如何通过为函数提供输入参数来检索值。我想在这里以这种方式检索如下,但它不会检索它而是在打印时给出空数组值。我不能在参数中使用像c这样的&符号。
NSMutableArray *firstArray = [[NSMutableArray alloc] init];
NSMutableArray *secondArray = [[NSMutableArray alloc] init];
MyClass *myClassObj = [[MyClass alloc] init];
[myClassObj getVals : firstArray : secondArray];
NSLog(@"firstArray: %@", firstArray); // empty
NSLog(@"secondArray: %@", secondArray); // empty
// function to retrieve
- (void) getVals :(NSMutableArray *) firstArray :(NSMutableArray *) secondArray
{
firstArray = [NSMutableArray arrayWithObjects:@"val1", @"val2", @"val3", @"val4", nil];
secondArray = [NSMutableArray arrayWithObjects:@"val11", @"val22", @"val33", @"val44", nil];
}
答案 0 :(得分:1)
试试这个:
- (void) getVals :(NSMutableArray *) firstArray :(NSMutableArray *) secondArray {
[firstArray addObjectsFromArray:@[ @"val1", @"val2", @"val3", @"val4" ]];
[secondArray addObjectsFromArray:@[ @"val11", @"val22", @"val33", @"val44" ]];
}
您已将代码分配给本地参数值,而不是将值添加到传入的数组中。
您的其他选择可能是:
NSMutableArray *firstArray = nil;
NSMutableArray *secondArray = nil;
MyClass *myClassObj = [[MyClass alloc] init];
[myClassObj getVals : &firstArray : &secondArray];
- (void) getVals :(NSMutableArray **) firstArray :(NSMutableArray **) secondArray {
*firstArray = [NSMutableArray arrayWithObjects:@"val1", @"val2", @"val3", @"val4", nil];
*secondArray = [NSMutableArray arrayWithObjects:@"val11", @"val22", @"val33", @"val44", nil];
}
答案 1 :(得分:0)
您正在使用新对象覆盖对象引用。你应该使用
[firstArray addObject:@"val1"]