如何从方法返回多个值

时间:2011-06-30 17:30:10

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

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

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

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

2 个答案:

答案 0 :(得分:7)

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

  1. malloc数组旧方式并将结构数据复制到数组
  2. malloc一个新的结构指针,复制数据,然后将指针存储在NSValue
  3. 创建一个与结构字段具有相同属性的类,并将其添加到数组
  4. 选项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 :(得分:4)

将您的位置对象添加到数组并返回数组。 e.g。

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