CLLocationCoordinate2D не является объектом, поэтому их нельзя просто добавить в массив и вернуть.Поскольку они являются структурами, существует несколько опций,
malloc
массив по старинке и копирование данных структуры в массив malloc
новый указатель структуры,скопируйте данные, затем сохраните указатель в NSValue
- . Создайте класс, обладающий теми же свойствами, что и поля структуры, и добавьте его в массив
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;
}