0

我已经定义了 CLLocation 的这个子类

我的位置.h

@interface MyLocation: CLLocation {
    NSString *datum;
    NSString *ellipsoid;
}

@property(nonatomic,retain) NSString *ellipsoid;
@property(nonatomic,retain) NSString *datum;

我的位置.m

@synthesize datum,ellipsoid;

现在我通过位置管理器委托获得一个 CLLocation 实例

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    //self.myPosition is a MyLocation myPosition;
    self.myPosition = newLocation;
    [myPosition setDatum: @"WGS 84"];
    [myPosition setEllipsoid: @"WGS 84"];
}

当我这样做时self.myPosition = newLocation,我得到一个 UNCAUGHT EXCEPTION 并且它死了

我也尝试过这种方式,结果相同:

self.myPosition = (MyLocation *)newLocation;
4

1 回答 1

0

newLocation 不是您的子类的实例,因此执行该分配或强制转换会引发错误,因为它是无效的强制转换,您应该从 cllocation 对象中设置您想要的子类的值,例如

self.myPosition=[[MyLocation alloc] initWithCoordinate:newLocation.coordinate]

等等

于 2009-08-23T00:33:55.960 回答