У меня есть UITabBarController и вкладка "Карта" на нем.Вкладка «Карта» связана с моим пользовательским UIViewController, и на ней есть MKMapView.Когда в данный момент я выбираю другую вкладку и когда я нажимаю на вкладку «Карта», iPhone4 с iOS4.3.1 аварийно завершает работу с журналом сбоев, подобным следующему:
Что можно сделать, чтобы предотвратить этот сбой?Что не так с моим кодом?
0 MapKit 0x3501fc20 _contains(objc_object*, MKQuadTrieNode*) + 16
1 MapKit 0x3501fc00 -[MKQuadTrie contains:] + 12
2 MapKit 0x3501f9f2 -[MKAnnotationContainerView addAnnotation:] + 218
3 MapKit 0x3501f8e6 -[MKAnnotationContainerView addAnnotations:] + 102
4 MapKit 0x3501f856 -[MKMapView addAnnotations:] + 42
5 MyApp 0x000075d6 0x1000 + 26070
6 UIKit 0x3559ff08 -[UIViewController view] + 104
7 UIKit 0x355dd1d4 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 60
8 UIKit 0x355dd186 -[UITabBarController transitionFromViewController:toViewController:] + 26
9 UIKit 0x355dca2c -[UITabBarController _setSelectedViewController:] + 180
10 UIKit 0x35661ce4 -[UITabBarController setSelectedViewController:] + 8
11 UIKit 0x35661be0 -[UITabBarController _tabBarItemClicked:] + 220
12 CoreFoundation 0x3593656a -[NSObject(NSObject) performSelector:withObject:withObject:] + 18
13 UIKit 0x35585ec2 -[UIApplication sendAction:to:from:forEvent:] + 78
14 UIKit 0x35585e62 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
15 UIKit 0x35661a84 -[UITabBar _sendAction:withEvent:] + 264
16 CoreFoundation 0x3593656a -[NSObject(NSObject) performSelector:withObject:withObject:] + 18
17 UIKit 0x35585ec2 -[UIApplication sendAction:to:from:forEvent:] + 78
18 UIKit 0x35585e62 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
19 UIKit 0x35585e34 -[UIControl sendAction:to:forEvent:] + 32
20 UIKit 0x35585b86 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 350
21 UIKit 0x355bfbd2 -[UIControl sendActionsForControlEvents:] + 10
22 UIKit 0x3566180e -[UITabBar(Static) _buttonUp:] + 74
23 CoreFoundation 0x3593656a -[NSObject(NSObject) performSelector:withObject:withObject:] + 18
24 UIKit 0x35585ec2 -[UIApplication sendAction:to:from:forEvent:] + 78
25 UIKit 0x35585e62 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
26 UIKit 0x35585e34 -[UIControl sendAction:to:forEvent:] + 32
27 UIKit 0x35585b86 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 350
28 UIKit 0x3558641c -[UIControl touchesEnded:withEvent:] + 336
29 UIKit 0x35584bee -[UIWindow _sendTouchesForEvent:] + 362
30 UIKit 0x35584568 -[UIWindow sendEvent:] + 256
31 UIKit 0x3556d30c -[UIApplication sendEvent:] + 292
32 UIKit 0x3556cc4c _UIApplicationHandleEvent + 5084
Мой пользовательский UIViewController делает это на viewDidLoad:
- (void) viewDidLoad {
[super viewDidLoad];
self.mapView.showsUserLocation = NO;
// some [[NSNotificationCenter defaultCenter] addObserver....] snipped
[ self.mapView addAnnotations: **my annotations** ];
}
Я думаю, что 5-я строка в трассировке стека - это viewDidLoad, поэтому сбой должен быть (Я думаю ..) из-за моих аннотаций.У меня было 300-400 аннотаций, когда он рухнул.В моих аннотациях есть координатор доступа, подобный этому:
- (CLLocationCoordinate2D)coordinate {
CLLocationCoordinate2D coordinate_;
coordinate_.latitude = [ self.lat doubleValue ];
coordinate_.longitude = [ self.lng doubleValue ];
return coordinate_;
}
Где self.lat, lng определяется как:
@property (nonatomic, retain) NSNumber* lat;
@property (nonatomic, retain) NSNumber* lng;
Это приложение уже есть в AppStore, и я не знаю, какчтобы воспроизвести сбой, теперь он просто не падает, поэтому все, что у меня есть, - это журнал сбоев и мой исходный код.Есть предложения?
Заранее спасибо.