質問: [self testMethod02]; } -(void)testMethod01:(NSMutableArray*)aArray{ [aArray addObject:@"test"]; } -(NSMutableArray*)testMethod02{ return @[@"test"].mutableCopy; } ``` そこでご質問です。 ・testMethod01のように引数に直接書き込む方法をobjective-cとして行って良いのでしょうか。 ・上記を行って良い場合、引数に直接書き込む方法と戻り値として貰う方法どちらが良いのでしょうか。 些細な疑問ですがご教示願います。 以上です、よろしくお願いします。
回答: `testMethod01`と`testMethod02`が、おなじ結果を導くメソッドというのが、あなたの質問の前提になっていますが、すこしよく見れば、おなじ結果にはなりません。 ``` NSMutableArray *array01 = [NSMutableArray arrayWithObjects: @"Apple", @"Banana", @"Candy", nil]; [self testMethod01: array01]; ``` > > 出力: {Apple, Banana, Candy, test} > > > ``` NSMutableArray *array02 = [NSMutableArray arrayWithObjects: @"Apple", @"Banana", @"Candy", nil]; array02 = [self testMethod02]; ``` > > 出力: {test} > > > なので、「どちらが良い」という比較の対象にはなりません。 > > ・testMethod01のように引数に直接書き込む方法をobjective-cとして行って良いのでしょうか。 > > > Objective-Cは、C言語の拡張です。C言語の文法や技法はとうぜんObjective-Cでも使えます。オブジェクトの参照(ポインタ)を関数の引数に渡す技法は、C言語の基礎としてだれもが習うことです。Objective-Cのメソッドの実体は、C言語の関数であることも、このさい覚えておいてください。以上から、使ってはいけないという結論が出る余地はありません。