iphone - 如何从一个方法返回多个值

标签 iphone objective-c ios return-value cllocationmanager

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

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

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

最佳答案

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;
}

关于iphone - 如何从一个方法返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538726/

相关文章:

ios - iOS 7-捕获内部库错误异常

IOS 自定义 Segue 和 ContainerView

iphone - 应用程序终止时,系统是否释放我的对象?

iPhone - 如何处理多个 UIImagePickerControllerDelegate?

iphone - 使用 Storyboard 在 iPhone 上 Split View

ios - 如何在 Objective-C 中将字符串插入到 sqlite?

objective-c - 内存是否更好地与一堆 if else 语句或每个单独的方法一起使用?

objective-c - NSTask 'launch path not accessible'

ios - 单击文本字段 IOS 时隐藏键盘

ios - 使用带有 Storyboard 的自定义 View 而不添加两次