EXC_BAD_ACCESS(SIGSEGV) - KERN_INVALID_ADDRESS

时间:2013-09-27 14:42:04

标签: objective-c xcode exc-bad-access sigsegv

我上传了该应用,并被拒绝说

我们发现您的应用在运行iOS 7的iPad上崩溃,这不符合App Store审核指南。

我上传的时间,iOS7没有启动。

崩溃报告说

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0xb1b1f20b

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x3a2f5b26 objc_msgSend + 6
1   MapKit                          0x30ca46a6 -[MKMapView mapViewDidFinishLoadingTiles:] + 46
2   VectorKit                       0x376bbaf4 -[VKTileSource didFinishWithNetwork] + 68
3   VectorKit                       0x376bc196 __32-[VKTileSource performDownload:]_block_invoke126 + 38
4   GeoServices                     0x345b6fdc ___ZNK49-[GEOTileLoaderInternal _loadedTile:forKey:info:]66__49-[GEOTileLoaderInternal _loadedTile:forKey:info:]_block_invoke3$_1clERKN8LoadItem9RequesterE_block_invoke_2 + 52
5   libdispatch.dylib               0x3a7ddd78 _dispatch_call_block_and_release + 8
6   libdispatch.dylib               0x3a7ddd64 _dispatch_client_callout + 20
7   libdispatch.dylib               0x3a7e47bc _dispatch_main_queue_callback_4CF$VARIANT$mp + 264
8   CoreFoundation                  0x2fab881c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
9   CoreFoundation                  0x2fab70f0 __CFRunLoopRun + 1296
10  CoreFoundation                  0x2fa21ce2 CFRunLoopRunSpecific + 518
11  CoreFoundation                  0x2fa21ac6 CFRunLoopRunInMode + 102
12  GraphicsServices                0x3471c27e GSEventRunModal + 134
13  UIKit                           0x322c3a3c UIApplicationMain + 1132

在崩溃中,我们看到MapKit 0x30ca46a6 -[MKMapView mapViewDidFinishLoadingTiles:]

MapKit是否存在问题?

对于mapkit,以下是我的内容

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Location";
    // Do any additional setup after loading the view.
    CLLocationCoordinate2D cords = {29.32511601390379, 48.08847418705136};
    MKCoordinateSpan span = {0.008400,0.008400};
    region = (MKCoordinateRegion) {cords,span};
    mapView.showsUserLocation = YES;
    [mapView setRegion:region animated:YES];
    [mapView setDelegate:self];

    DisplayMap *ann = [[DisplayMap alloc] init];
    ann.coordinate = region.center;
    [mapView addAnnotation:ann];
}

此外,我在mapkitviewcontroller中没有dealloc。那很好吗?我问这个错误与内存管理有关。

我的应用有5个标签。前4个选项卡只是UIWebView。对于webview,我发现我没有把webview放在dealloc中。以下是我在webview中的内容,

- (void)dealloc {
    [super dealloc];
}

现在我的xcode上也没有iOS 7。我需要下载它,但想在此之前询问。

注意: All与iOS 6完美配合。

有没有猜到我收到此错误的原因?

2 个答案:

答案 0 :(得分:4)

在离开页面之前,已将地图视图委托设置为nil。另外我认为IOS地图存在一些内存管理问题。因此,最好使用dealloc方法发布地图。

答案 1 :(得分:0)

当我将mapView放入dealloc时,问题就解决了。

在进一步调查时,还注意到我没有为DisplayMap添加标题。

DisplayMap *ann = [[DisplayMap alloc] init];
ann.title = @"My Location";