【问题标题】:how to return multiple values from a method如何从一个方法返回多个值
【发布时间】:2011-06-30 17:30:09
【问题描述】:

我有 -(CLLocationCoordinate2D) 方法,我想从该方法返回多个位置(这些位置在另一个方法中使用) 我的方法是这样的,

-(CLLocationCoordinate2D) addressLocation{
 - --------
 ----------
 return location;
 }

是否可以返回多个位置(我的意思是 return location1 ,return location2 ...)??请帮我 谢谢

【问题讨论】:

    标签: iphone objective-c ios return-value cllocationmanager


    【解决方案1】:

    CLLocationCoordinate2D 不是一个对象,因此不能将它们添加到数组中并返回。由于它们是结构,因此有几个选项,

    1. malloc 一个数组旧式方式并将结构数据复制到数组中
    2. malloc 一个新的结构指针,复制数据,然后将指针存储在 NSValue
    3. 创建一个与结构的字段具有相同属性的类,并将其添加到数组中

    选项 1 和 2 需要额外的内存管理来确定何时释放数据,因此请避免使用这些。选项 3 很好,恰巧 MapKit 提供了 CLLocation 类。这是 2 个坐标的示例。

    -(NSArray*) addressLocations
    {
        CLLocationCoordinate2D coord1 = CLLocationCoordinate2DMake(1.00, 1.00);
        CLLocationCoordinate2D coord2 = CLLocationCoordinate2DMake(2.00, 2.00);
    
        CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude];
        CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:coord2.latitude longitude:coord2.longitude];
    
        NSArray *array = [NSArray arrayWithObjects:loc1, loc2, nil];
    
        [loc1 release];
        [loc2 release];
    
        return array;
    }
    

    【讨论】:

    • +1 用于指出相关的地图工具包类来完成这项工作
    【解决方案2】:

    将您的位置对象添加到数组并返回该数组。例如

    -(NSArray*) addressLocation{
       ...  // Set your locations up
       NSArray *array = [NSArray arrayWithObjects:location1, location2, nil];
       ... // Do any additional processing and return array.
    }
    

    【讨论】:

    • 是否可以从 CLLocationCoordinate2D 方法返回一个数组??
    • George 的意思是您需要重写您的方法签名,以便它返回一个 Array 而不是 CLLocationCoordinate2D。然后在方法实现中,您应该用坐标填充数组并返回它们。只有 1 个返回会触发,然后该方法完成。您不能在同一个方法调用中执行 2 个或多个返回。
    • CLLocationCoordinate2D 不是对象。而且代码可能甚至无法编译。
    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2010-11-30
    • 1970-01-01
    • 2013-02-12
    • 2012-01-19
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多