我有一个错误,当应用程序启动时,它会崩溃。这是我得到的错误:
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan nan]'
*** First throw call stack:
(0x250b022 0x2709cd6 0x24b3a48 0x24b39b9 0x217ec0d 0x2174f55 0x158f3f7 0xbc74e 0xbe512 0xbfa26 0xbe4ad 0x224ffda 0x224f956 0x224e449 0x224ab9a 0x24df970 0x247f1c1 0x2442967 0x2441d84 0x2441c9b 0x2c0a7d8 0x2c0a88a 0x1559626 0x2aed 0x2a65)
terminate called throwing an exception我尝试使用异常断点,但它没有显示代码的哪一部分已经失效,仅在这一点停止-0xbc74e: wrong.It $0,%eax-
我该怎么解决它呢?请帮帮忙。
*编辑
我找到了抛出异常的部分,但我看不出哪里出了问题
- (void)viewDidLoad {
[super viewDidLoad];
[self.activityView startAnimating];
self.mapView.layerDelegate = self;
self.mapView.touchDelegate = self;
self.mapView.calloutDelegate = self;
NSURL *mapUrl = [NSURL URLWithString:kTiledMapServiceURL];
AGSTiledMapServiceLayer *tiledLyr = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL:mapUrl];
[self.mapView addMapLayer:tiledLyr withName:@"Tiled Layer"];
.
.
.
}
- (void)mapViewDidLoad:(AGSMapView *)mapView {
AGSEnvelope *envelope = [[AGSEnvelope alloc]initWithXmin:29757.610204117 ymin:40055.0379682464 xmax:29884.6992302249 ymax:40236.6028660071 spatialReference:self.mapView.spatialReference];
//call method to set extent, pass in envelope
[self.mapView zoomToEnvelope:envelope animated:YES];
self.mapView.callout.width = 195.0f;
self.mapView.callout.accessoryButtonHidden = YES;
[self.mapView.gps start];
[self.mapView centerAtPoint:self.mapView.gps.currentPoint animated:YES];
[self.activityView stopAnimating];
self.activityView.hidden = YES;
}这一行导致了缺省调用方法mapViewDidLoad的self.mapView.layerDelegate = self;错误
发布于 2012-07-24 19:04:46
我认为这个错误的发生是因为被执行的层有如下形式的框架:
图层帧== {{inf,inf},{0,0}}
这里的inf是下确界。它的一组数字。
因此,避免这种问题的解决方案就是在层返回之前创建条件。如下所示:
if (layer.frame.size.width ==0 || layer.frame.size.height ==0 ) {
return [self simpleLayer];
}else{
return layer;
} 其中simple layer类似于:
-(CALayer *)simpleLayer{
CALayer *layer = [[CALayer alloc] init];
[layer setFrame:CGRectMake(0, 0, 10, 10)];
[layer setHidden:TRUE];
return layer;
}这种情况解决了我的问题。试试看。
发布于 2013-05-06 02:36:43
对于我来说,这是由于以下代码中的toView为空造成的:
[UIView transitionFromView:self.fromView
toView:self.toView
duration:0.6
options:(currentPage > toPage ? UIViewAnimationOptionTransitionCurlDown : UIViewAnimationOptionTransitionCurlUp)
completion:^(BOOL finished) {
if (finished) {
}
}发布于 2013-01-21 14:58:14
我知道这个问题不是很新,但我只是想给出一个答案。不管怎样,我猜你的mapView是AGSMapView的,你是这样初始化的:
self.mapView = [[[AGSMapView alloc] init] autorelease];现在,我认为初始化它的最好方法是使用initWithFrame,如果不是唯一正确的方法。虽然我不知道为什么,但如果你使用init进行初始化,mapView就会崩溃。
希望这能有所帮助。
https://stackoverflow.com/questions/11533120
复制相似问题