CLLocationCoordinate2D nie jest obiektem, więc nie można go dodać do tablicy i zwrócić. Ponieważ są one kodowanym istnieje kilka opcji,
malloc
tablicą stara moda sposób i skopiować dane struct do tablicy
malloc
nowy wskaźnik struct, skopiować dane, a następnie przechowywać wskaźnik w sposób NSValue
- utworzyć klasę, która ma takie same właściwości jak polach struktury, a także dodać, że do tablicy
opcji 1 i 2 wymagają dodatkowego zarządzania pamięcią o tym, kiedy uwolnić dane więc unikać tych. Opcja 3 jest dobra i tak się składa, że MapKit oferuje klasę CLLocation
. Oto przykład 2 współrzędnych.
-(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;
}
czy można zwrócić tablicę z metody CLLocationCoordinate2D? – sajaz
George mówi, że trzeba przepisać sygnaturę metody, aby zwracała tablicę zamiast CLLocationCoordinate2D. Następnie w implementacji metody należy wypełnić tablicę współrzędnymi i zwrócić te. Zwróci się tylko jeden zwrot, a ta metoda zostanie wykonana. Nie można wykonać 2 lub więcej zwrotów w tym samym wywołaniu metody. – Andrew
ya, wielkie dzięki. Mam to :) :) – sajaz