使用EXC_BAD_ACCESS保留的财产?

我在我的类中调用的位置,它使用非原子,保留两个属性。 然而,当我将其分配到的东西,第一次我得到一个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]; }

从我记得当你使用一个保留属性,它会自动释放当前的对象,当你合成它保留了新的对象。 我想这是因为我放的东西是不存在抛出这个错误。 但是,有没有办法让周围还是我看到它都错了? 此外,当我使用变量本身不会引发错误,只有当自我。 用来。

这里是我的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

--------------解决方案-------------

检查newLocation以确保它的参考和/或它的坐标财产没有返回一个空引用。

你有没有合成的财产?我建议你检查first.And您可以使用调试器检查,如果你上,如果(!self.location)部分或self.location = [[的Point2D页头] initWithX错误..... 。一部分?

分类:目标C 时间:2015-03-15 人气:3
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.427 (s). 10 q(s)