0

関数に入力パラメーターを与えて値を取得する方法を知りたいです。以下のようにここで取得したいのですが、印刷時に空の配列値を与えるのではなく、取得しません。パラメータに 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];


    }
4

2 に答える 2

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];
}
于 2013-01-07T14:54:19.380 に答える
0

オブジェクト参照を新しいオブジェクトでオーバーライドしています。Uはむしろ使用する必要があります

[firstArray addObject:@"val1"]
于 2013-01-07T14:51:31.490 に答える