Можно ли возвратить два аргумента в цели-c?

Просто удивление, если бы можно возвратить два аргумента в цели c метод, например, я хотел бы возвратить декартовую координату (x, y), в основном два ints. являются единственным способом сделать это путем создания класса и возврата экземпляра? Есть ли некоторый другой способ, которым я не думаю, своего рода новичок здесь.

(Синтаксическая справка также ценилась бы.)

Спасибо,

Nick

15
задан Moshe 28 April 2011 в 06:06
поделиться

3 ответа

[

]Вы можете вернуть только одно значение из функции (как и C), но значение может быть любым, включая структуру. А так как вы можете возвращать структуру по значению, вы можете определить такую функцию (позаимствовать ваш пример):[

]. [
-(NSPoint)scalePoint:(NSPoint)pt by:(float)scale
{
    return NSMakePoint(pt.x*scale, pt.y*scale);
}
] [

] Это действительно подходит только для маленьких/простых структур. [

] [

] Если Вы хотите вернуть более одного нового объекта [] [], Ваша функция должна принимать указатели на указатель объекта, таким образом: [

]. [
-(void)mungeFirst:(NSString**)stringOne andSecond:(NSString**)stringTwo
{
    *stringOne = [NSString stringWithString:@"foo"];
    *stringTwo = [NSString stringWithString:@"baz"];
}
]
33
ответ дан 1 December 2019 в 00:54
поделиться

Не могли бы вы сделать NSArray для этого?

return [NSArray arrayWithObjects:coorX, coorY, nil];
3
ответ дан 1 December 2019 в 00:54
поделиться
[

]Можно либо возвращать одно значение напрямую и возвращать другое по ссылке, как показано в []gs ответе [], либо создать тип структуры и вернуть его. Например, какао уже включает тип для идентификации точек на 2D плоскости, []NSPoint[].[

].
3
ответ дан 1 December 2019 в 00:54
поделиться