私たちのアプリには、地図と GPS ベースの位置追跡機能があります。このアプリはすでに Apple Store にアップロードされています。アプリには次の機能が含まれています。
- マップ リアルタイムの交通データを表示 リアルタイムの交通イベント (事故、交通渋滞など) を表示
ユーザーの GPS 位置追跡 アプリケーションは、iOS バージョン 5 および 6 で正常に動作します。アプリでマップ機能を操作しているときに、iOS 7 ベータ版で次のようなクラッシュの問題に直面しています。iOS の次の機能を使用して、交通データと交通イベントをマップにレンダリングしました。
交通イベントをレンダリングする MKAnnotation
トラフィック データをレンダリングするために、アプリは CGBitmapContextCreate 関数を使用しています。
context = CGBitmapContextCreate (NULL, self.mapView.frame.size.width, self.mapView.frame.size.height, 8,// bits per component bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast); CGContextSetAllowsAntialiasing (context,YES)
ビットマップ コンテキストにトラフィック データを表示するための線を描画します。
作成されたビットマップ コンテキストは、MKAnnotation API を使用してマップ上に表示されます。
ユーザーによるマップの操作はスムーズであるため、アプリは NSOperationQueue を使用してトラフィック データとイベント データをレンダリングします。以下は、コードのスニペットです。
[queue addOperationWithBlock:^{ [Set the required data], [Update the UI] }];
以下は、マップ機能のランダム操作中に生成される 2 つのクラッシュ ログです。
クラッシュログ - 1
事件
Identifier: 471EAE21-E118-4E3D-AAAE-D7D82B1D6326
CrashReporter
Key:
bdbf75eb30240449214769478f38830aa7a14f7f
Hardware
Model: iPhone5,2
Process: {Application Name} [246]
Path: /var/mobile/Applications/4FA0A7F2-4998-4F8F-A4C6-66D849D074B8/{Application Name}.app/{Application Name}
Identifier: {Application bunald name}
Version: X.X.X.X
Code
Type: ARM (Native)
Parent
Process: launchd [1]
Date/Time: 2013-08-30 14:21:24.523 +0530
OS
Version: iOS 7.0 (11A4449d)
Report
Version: 104
Exception
Type: EXC_BAD_ACCESS (SIGSEGV)
Exception
Subtype: KERN_INVALID_ADDRESS at 0x8000000c
Triggered
by Thread: 0
Thread
0 Crashed:
0 libobjc.A.dylib 0x38ed3b66
objc_msgSend + 6
1 CoreFoundation 0x2ede773c -[__NSSetM removeObject:] + 92
2 MapKit 0x3002de96 -[MKAnnotationManager
_removeRepresentationForAnnotation:fromCull:] + 490
3 MapKit 0x3004bc54 -[MKAnnotationManager
_removeAnnotation:updateVisible:removeFromContainer:] + 272
4 MapKit 0x3004bb38 -[MKAnnotationManager removeAnnotation:] + 24
5 SLIM 0x00165828 -[TravelStarViewController
mapView:viewForAnnotation:] (TravelStarViewController.m:1735)
6 MapKit 0x3005ea86 -[MKMapView
annotationManager:representationForAnnotation:] + 74
7 MapKit 0x3002a136 -[MKAnnotationManager _addRepresentationForAnnotation:]
+ 362
8 MapKit 0x30028c4a -[MKAnnotationManager updateVisibleAnnotations] +
1034
9 Foundation 0x2f876358 __NSFireTimer + 60
10 CoreFoundation 0x2ee7ae84 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
+ 12
11 CoreFoundation 0x2ee7aa9e __CFRunLoopDoTimer + 790
12 CoreFoundation 0x2ee78e26 __CFRunLoopRun + 1214
13 CoreFoundation 0x2ede353c CFRunLoopRunSpecific + 520
14 CoreFoundation 0x2ede331e CFRunLoopRunInMode + 102
15 GraphicsServices 0x3387733e
GSEventRunModal + 134
16 UIKit 0x313fc7b0 UIApplicationMain + 1132
17 SLIM 0x000f3fa6
main (main.m:15)
18 SLIM 0x000f3efc start + 36