2012-04-24 97 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