2011-06-30 17 views
7

tengo - método (CLLocationCoordinate2D), quiero volver varias ubicaciones a partir de ese método (esos lugares están utilizando en otro método) mi método se parece a esto,cómo devolver varios valores de un método

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

es posible devolver varias ubicaciones (quiero decir return location1, return location2. ...) ?? por favor, ayúdenme gracias

Respuesta

4

Agregue sus objetos de ubicación a una matriz y devuelva la matriz en su lugar. p.ej.

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

¿es posible devolver una matriz desde el método CLLocationCoordinate2D? – sajaz

+2

Lo que George está diciendo es que debe volver a escribir la firma de su método para que devuelva una matriz en lugar de CLLocationCoordinate2D. Luego, en la implementación del método, debe llenar una matriz con coordenadas y devolverlas. Solo se activará 1 devolución, luego se realiza ese método. No puede hacer 2 o más devoluciones en la misma llamada a método. – Andrew

+0

ya, muchas gracias chicos. Lo tengo :) :) – sajaz

7

CLLocationCoordinate2D no es un objeto, por lo que no pueden agregarse a una matriz y devolverse. Puesto que son estructuras que hay algunas opciones,

  1. malloc una matriz a la antigua usanza y copiar los datos struct en la matriz
  2. malloc un nuevo puntero de estructura, copiar los datos, a continuación, almacenar el puntero en una NSValue
  3. crear una clase que tiene las mismas propiedades que los campos de la estructura, y añadir que a una matriz

Opción 1 y 2 requieren de gestión de memoria adicional en cuanto a cuándo liberar los datos para evitar aquellos. La opción 3 es buena y sucede que MapKit ofrece la clase CLLocation. Aquí hay un ejemplo de 2 coordenadas.

-(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; 
} 
+0

+1 para señalar la clase de kit de mapas relevante para hacer el trabajo con – bshirley

Cuestiones relacionadas