У меня есть свойство в моем классе, называемое location, которое использует неатомарное свойство retain.Тем не менее, я получаю ошибку EXC_BAD_ACCESS, когда я назначаю его чему-то в первый раз.Сбой при назначении в приведенном ниже коде:
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if(!self.location)
{
self.location =
[[Point2D alloc] initWithX:newLocation.coordinate.longitude Y:newLocation.coordinate.latitude];
}
Из того, что я помню, когда вы используете свойство retain, оно автоматически освобождает текущий объект и сохраняет новый объект при его синтезе.Я думаю, что это выдает эту ошибку, потому что я выпускаю то, чего там нет.Но есть ли способ обойти это, или я вижу все это неправильно?Кроме того, он не выдает ошибку, когда я использую саму переменную, только когда сам.
Вот также информация о моем классе Point2D:
@interface Point2D : NSObject {
}
@property (nonatomic, assign) float x, y;
-(id)initWithX:(float)nx Y:(float)ny;
@end
@implementation Point2D
@synthesize x = _x, y = _y;
-(id)init
{
return [self initWithX:0.00 Y:0.00];
}
-(id)initWithX:(float)nx Y:(float)ny
{
self = [super init];
self.x = nx;
self.y = ny;
NSLog(@"initWithX");
return self;
}
@end