你能在objective-c中返回两个参数吗?

nic*_*ude 15 methods xcode arguments objective-c

只是想知道你是否可以在一个客观的c方法中返回两个参数,例如我想返回一个笛卡尔坐标(x,y),基本上是两个整数.是通过创建一个类并返回一个实例来实现这一目的的唯一方法吗?还有其他一些我没想到的方式,这里有一个初学者.

(语法帮助也将不胜感激.)

谢谢,

缺口

gav*_*inb 33

您只能从函数返回一个值(就像C一样),但值可以是任何值,包括结构.既然你可以按值返回一个struct,你可以定义一个这样的函数(借用你的例子):

-(NSPoint)scalePoint:(NSPoint)pt by:(float)scale
{
    return NSMakePoint(pt.x*scale, pt.y*scale);
}
Run Code Online (Sandbox Code Playgroud)

这仅适用于小/简单结构.

如果要返回多个新对象,则函数应该指向对象指针,因此:

-(void)mungeFirst:(NSString**)stringOne andSecond:(NSString**)stringTwo
{
    *stringOne = [NSString stringWithString:@"foo"];
    *stringTwo = [NSString stringWithString:@"baz"];
}
Run Code Online (Sandbox Code Playgroud)

  • 现在随着Swift的引入,您可以使用元组从函数返回多个参数.有关详细信息,请参阅[The Swift Programming Language](https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/index.html). (5认同)