как вернуть несколько значений из метода - PullRequest
7 голосов
/ 30 июня 2011

У меня есть метод (CLLocationCoordinate2D), я хочу вернуть несколько местоположений из этого метода (эти местоположения используются в другом методе) мой метод выглядит так,

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

возможно ли вернуть несколько местоположений (я имею в виду return location1, return location2 ... ...) ?? Помогите мне, пожалуйста спасибо

Ответы [ 2 ]

7 голосов
/ 30 июня 2011

CLLocationCoordinate2D не является объектом, поэтому их нельзя просто добавить в массив и вернуть.Поскольку они являются структурами, существует несколько опций,

  1. malloc массив по старинке и копирование данных структуры в массив
  2. malloc новый указатель структуры,скопируйте данные, затем сохраните указатель в NSValue
  3. . Создайте класс, обладающий теми же свойствами, что и поля структуры, и добавьте его в массив

Option1 и 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;
}
4 голосов
/ 30 июня 2011

Добавьте ваши объекты местоположения в массив и вместо этого верните массив.например,

-(NSArray*) addressLocation{
   ...  // Set your locations up
   NSArray *array = [NSArray arrayWithObjects:location1, location2, nil];
   ... // Do any additional processing and return array.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...