私は、「BNR Guide to iOS programming」の第5章からwhereamiというアプリを開発しています。私はアプリを稼働させて、妻と家族に見せてもらいました。それは、しかし、定期的なクラッシュ動作を展示している。あなたがそれを残す場合はここで私はiOSデベロッパーを学んでいて、MapKitアプリがクラッシュしています。このクラッシュログを理解するのに助けが必要です
をするときは、最初のオープンアプリ....何が起こるかであり、それは罰金ない、それを実行し、 あなたが家にヒットして、それがうまくないわずか数分以内に再度開くと、 バックグラウンドで再起動してから数分以上(たとえば5以上)、クラッシュします。 その後、再び開くことができますが、それでも問題はありませんが、パターンは繰り返されます。
私は本のコードをすべてダブルチェックして、正誤表を見ていますが、何が間違っているのか理解できません。 Xcodeのオーガナイザにはすべてのクラッシュのログが表示されますが、その読み方はまだ分かりません。私はこれが単なる学習プロジェクトのアプリであり、実際の使用には向いていないのではないか、多分マルチタスク/バックグラウンド/再オープンの何かが不足しているのだろうか?正しく? iOS 4.3.4を実行しているiPhone 4でXcode 4.1をライオンで使用しています。私は誰でも提供できる援助に感謝します。ここで
は、私がクラッシュログの関連部分と思われるものである:
Incident Identifier: 352B538C-75BB-4BDF-9C2B-EC9613CE1B44
CrashReporter Key: 5896ed7851b999169919cab30c69940f74ed6b0c
Hardware Model: iPhone3,1
Process: WhereAmI [775]
Path: /var/mobile/Applications/DB57A854-01F8-460F-B8CD-38B8FC50FBAF/WhereAmI.app/WhereAmI
Identifier: WhereAmI
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-07-23 18:47:19.093 -0400
OS Version: iPhone OS 4.3.4 (8K2)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x356d8a1c __pthread_kill + 8
1 libsystem_c.dylib 0x34d543b4 pthread_kill + 52
2 libsystem_c.dylib 0x34d4cbf8 abort + 72
3 libstdc++.6.dylib 0x35434a64 __gnu_cxx::__verbose_terminate_handler() + 376
4 libobjc.A.dylib 0x35fdd06c _objc_terminate + 104
5 libstdc++.6.dylib 0x35432e36 __cxxabiv1::__terminate(void (*)()) + 46
6 libstdc++.6.dylib 0x35432e8a std::terminate() + 10
7 libstdc++.6.dylib 0x35432f5a __cxa_throw + 78
8 libobjc.A.dylib 0x35fdbc84 objc_exception_throw + 64
9 CoreFoundation 0x3504d3c6 -[NSException raise] + 2
10 MapKit 0x3389bcb2 -[MKMapView setRegion:animated:] + 318
11 WhereAmI 0x000029cc -[WhereAmIAppDelegate mapView:didUpdateUserLocation:] (WhereAmIAppDelegate.m:52)
12 MapKit 0x338a11b6 -[MKMapView(UserPositioningInternal) resetUserLocation] + 142
13 MapKit 0x338a074e -[MKMapView(UserPositioningInternal) locationManagerDidReset:] + 22
14 CoreFoundation 0x34fbaefc -[NSObject(NSObject) performSelector:withObject:] + 16
15 CoreFoundation 0x34ff82f2 -[NSArray makeObjectsPerformSelector:withObject:] + 394
16 MapKit 0x33893802 -[MKLocationManager _reportLocationStatus:] + 34
17 MapKit 0x338937ce -[MKLocationManager _reportLocationReset] + 14
18 MapKit 0x33894d24 -[MKLocationManager reset] + 88
19 MapKit 0x338770a2 -[MKLocationManager applicationResumed:] + 62
20 Foundation 0x30fa017c _nsnote_callback + 136
21 CoreFoundation 0x3501c208 __CFXNotificationPost_old + 396
22 CoreFoundation 0x34fb6ee4 _CFXNotificationPostNotification + 112
23 Foundation 0x30f9d5cc -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
24 UIKit 0x3640f720 -[UIApplication _handleApplicationResumeEvent:] + 900
25 UIKit 0x362b9e20 -[UIApplication handleEvent:withNewEvent:] + 2724
26 UIKit 0x362b920e -[UIApplication sendEvent:] + 38
27 UIKit 0x362b8c4c _UIApplicationHandleEvent + 5084
28 GraphicsServices 0x35827e70 PurpleEventCallback + 660
29 GraphicsServices 0x35827efa PurpleEventSignalCallback + 10
30 CoreFoundation 0x35024a72 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
31 CoreFoundation 0x35026758 __CFRunLoopDoSources0 + 376
32 CoreFoundation 0x350274e4 __CFRunLoopRun + 224
33 CoreFoundation 0x34fb7ebc CFRunLoopRunSpecific + 224
34 CoreFoundation 0x34fb7dc4 CFRunLoopRunInMode + 52
35 GraphicsServices 0x35827418 GSEventRunModal + 108
36 GraphicsServices 0x358274c4 GSEventRun + 56
37 UIKit 0x362e3d62 -[UIApplication _run] + 398
38 UIKit 0x362e1800 UIApplicationMain + 664
39 WhereAmI 0x000027c0 main (main.m:14)
40 WhereAmI 0x00002768 start + 32
私はこれで非常に新しいですが、私はと呼ばれる最後の関数はここにあると推測しています:
8 libobjc.A.dylib 0x35fdbc84 objc_exception_throw + 64
9 CoreFoundation 0x3504d3c6 -[NSException raise] + 2
10 MapKit 0x3389bcb2 -[MKMapView setRegion:animated:] + 318
11 WhereAmI 0x000029cc -[WhereAmIAppDelegate mapView:didUpdateUserLocation:] (WhereAmIAppDelegate.m:52)
WhereAmIAppDelegate.mからメソッドのコードはここにある:領域は、いくつかの値を持つ場合
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{
// Zoom in on user here
CLLocationCoordinate2D loc = [userLocation coordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
[worldView setRegion:region animated:YES];
}
回答いただきありがとうございます。すぐに250-250.0を変更します。それが私の問題を解決しようとしているのですか?さらに重要なのは、地域に価値があるかどうかを確認することですか?私はapplictionDidFinishLoading:withOptionsまたはmapView delegateレスポンダで処理されるほとんどのものを持っています。 – vichudson1
このメソッドはおそらくintの代わりに浮動小数点数を受け入れているためです。 – Peres
intをfloatに変更しました。 msg [worldView setRegion:region]を送信する前に、地域に値があるかどうかを確認しようとしています。領域に値があるかどうかを確認するにはどうすればよいですか?私は運がないならif(region!= NIL)を試しました。 Xcodeはそれを好まないようです。私はC++の経験を持っていますが、私は客観的なC.に新しいです。 – vichudson1