Просто удивление, если бы можно возвратить два аргумента в цели c метод, например, я хотел бы возвратить декартовую координату (x, y), в основном два ints. являются единственным способом сделать это путем создания класса и возврата экземпляра? Есть ли некоторый другой способ, которым я не думаю, своего рода новичок здесь.
(Синтаксическая справка также ценилась бы.)
Спасибо,
Nick
]Вы можете вернуть только одно значение из функции (как и 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"];
}
] Не могли бы вы сделать NSArray
для этого?
return [NSArray arrayWithObjects:coorX, coorY, nil];
]Можно либо возвращать одно значение напрямую и возвращать другое по ссылке, как показано в []gs ответе [], либо создать тип структуры и вернуть его. Например, какао уже включает тип для идентификации точек на 2D плоскости, []NSPoint[].[
].