iOS:从函数输入参数中检索数据

时间:2013-01-07 14:45:27

标签: ios

我想知道如何通过为函数提供输入参数来检索值。我想在这里以这种方式检索如下,但它不会检索它而是在打印时给出空数组值。我不能在参数中使用像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];


    }

2 个答案:

答案 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"]