2011-06-30 43 views
7

返回多個值我有 - (CLLocationCoordinate2D)的方法,我想從這個方法返回的多個位置(這些位置是用另一種方法) 我的方法是這樣的,如何從一個方法

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

是否有可能返回多個位置(我的意思是返回位置1,返回位置2 ..)?? ??請幫助我 謝謝

回答

4

將您的位置對象添加到數組並返回數組。例如

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

是否有可能從CLLocationCoordinate2D方法返回數組? – sajaz

+2

喬治說的是你需要重寫你的方法簽名,所以它返回一個數組而不是CLLocationCoordinate2D。然後在方法實現中,您應該用座標填充數組並返回它們。只有1個回報會發生,那麼該方法就完成了。您不能在同一個方法調用中做兩次或多次返回。 – Andrew

+0

你好,非常感謝你們。我明白了:) :) – sajaz

7

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

+1用於指出相關的地圖工具包課程來完成此工作 – bshirley

相關問題