メソッドから 2 つ (またはそれ以上) の変数を返す最良の方法は何ですか?
2 つの整数値 (例: a=10 と b=20) を (親) メソッドに返し、それらを変数 myFirst と mySecond にロードするとします。
どちらの方法でも機能しますが、どちらが優れているのでしょうか?
1) 「古典的な」方法:
-(int *)returnMyValues1
{
int a = 10, b = 20;
static int myResult[2];
myResult[0] = a;
myResult[1] = b;
return myResult;
}
...
int *result;
result = [viewSeatsAndMore returnMyValues];
myFirst = *result;
mySecond = *(result+1);
2) 「客観的」な方法:
-(NSArray *)returnMyValues2
{
int a = 10, b = 20;
return [NSArray arrayWithObjects:[NSNumber numberWithInt:a], [NSNumber numberWithInt:b], nil];
}
...
NSArray *result = [self returnMyValues2];
myFirst = [[result objectAtIndex:0] intValue];
mySecond = [[result objectAtIndex:1] intValue];
速度に関しては、100 万回の反復でテストすると、最初の方法は 6 秒高速です。
しかし、メモリはどうですか?「静的 int」は NSArray より優れていますか?
(静的な int による) メモリの予約は、(無視できる) 速度向上に値しませんか?
より良い方法はありますか?