1

我对Objective-C(和C本身)很陌生,所以这可能真的很容易,但我有点卡住了。

我有一个需要用户输入的视图控制器,我有一个表格视图,其中有一行表示纬度和经度值。当用户点击该行时,它会将他们带到一个带有地图视图的新视图控制器。

我有一个标记供他们拖动并选择他们的位置:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView 
didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState 

在这种方法中,我想用新坐标更新以前的视图控制器。

它有一个属性:

CLLocationCoordinate2D destinationCoordinates;

我已将其设置为非原子、分配和合成

我的代码是这样做的:

NSArray *allControllers = self.navigationController.viewControllers;

EnterDetailsViewController *parent = [allControllers objectAtIndex:([allControllers count] -2)];

if ([parent isKindOfClass:[EnterDetailsViewController class]])
{
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = annotation.coordinate.latitude;
    theCoordinate.longitude =  annotation.coordinate.longitude;

    parent.destinationCoordinates = theCoordinate;

    NSLog(@"Set coord to %@ - %@",
          parent.destinationCoordinates.latitude, 
          parent.destinationCoordinates.latitude);

NSLog总是崩溃EXC_BAD_ACCESS- 为什么会这样?我在这里误解了什么核心概念?

4

1 回答 1

4

的定义CLLocationCoordinate2D是:

typedef struct {
  CLLocationDegrees latitude;
  CLLocationDegrees longitude;
} CLLocationCoordinate2D;

您使用 %@ 打印对象,请尝试:

NSLog(@"Set coord to %f - %f",
      parent.destinationCoordinates.latitude,
      parent.destinationCoordinates.longitude);

请注意,它CLLocationDegrees是 double 类型:

typedef double CLLocationDegrees;
于 2011-05-17T13:17:15.613 回答