从方法中返回 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)不值得(可忽略的)速度增益吗?
有没有更好的办法?