2012-04-24 41 views
0
獲得價值

我構建了一系列MKPolygons的並將它們存儲在NSValues數組:EXC_BAD_ACCESS從NSValue

for (NSDictionary* country in countries) { 
    NSMutableArray* polygons = [[NSMutableArray alloc] init]; 

    for (NSArray* polygon in [country objectForKey:@"polygons"]) { 
     CLLocationCoordinate2D polygonCoords[polygon.count]; 

     int i; 
     for (i = 0; i < polygon.count; i++) { 
      NSValue* coords = [polygon objectAtIndex:i]; 
      CLLocationCoordinate2D stored_coords; 
      [coords getValue:&stored_coords]; 
      polygonCoords[i] = stored_coords; 
     } 

     MKPolygon* poly = [MKPolygon polygonWithCoordinates:polygonCoords count:polygon.count]; 
     [polygons addObject:[NSValue valueWithBytes:&poly objCType:@encode(MKPolygon)]]; 
     [chillPillMap addOverlay:poly]; 
    } 
    [country setValue:polygons forKey:@"polygon_objects"]; 
} 

然而,當我稍後再嘗試訪問它們,我得到的是兩個或三個,併發生EXC_BAD_ACCESS:

for (NSDictionary* country in countries) { 
    NSArray* polygon_objects = [country objectForKey:@"polygon_objects"]; 
    int i; 
    for (i = 0; i < polygon_objects.count; i++) { 
     MKPolygon* saved_poly = [MKPolygon alloc]; 
     [[polygon_objects objectAtIndex:i] getValue:&saved_poly]; 
    } 
} 

不確定這是爲什麼。

+0

你可以張貼的錯誤,他們出現什麼線路上? – 2012-04-24 23:52:58

回答

1

MKPolygon是一個Objective-C對象。你可以把它放到數組中,而不必將它轉換爲NSValue。此外,你正在告訴NSValue獲取字節的值,但是你將它傳遞給指針的地址。壞消息。

爲什麼不......

[polygons addObject:poly] 

然後...

MKPolygon *saved_poly = [polygon_objects objectAtIndex:i]; 
+0

哦,我想我傷了我的頭,「這麼辛苦」。謝謝! – James 2012-04-25 00:05:08