Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка при добавлении аннотации на карту #9

Closed
ploddi opened this issue Feb 16, 2012 · 5 comments
Closed
Assignees

Comments

@ploddi
Copy link

ploddi commented Feb 16, 2012

Сегодня получил непрятный отказ на релиз приложения в AppStore. У себя повторить данную ошибку не могу. Сотрудник review team привел список действий приводящих к ошибке, по которым ясно что ошибка возникает при появлении контроллера, который содержит YMKMapView. Вот стек из крешлога:

Incident Identifier: 9FC6FA96-CEB8-484A-95B3-6F4854CA5AEB
CrashReporter Key:   d91f018f5afc31f948a80025c7a09bb112a3caf4
Hardware Model:      iPhone3,1
Process:         dk-rk [16448]
Path:            /var/mobile/Applications/C2C16E16-49F8-487C-B7D7-09975D6C1140/dk-rk.app/dk-rk
Identifier:      dk-rk
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2012-02-15 15:04:48.365 -0800
OS Version:      iPhone OS 5.0.1 (9A405)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x342e08bf __exceptionPreprocess + 163
1   libobjc.A.dylib                 0x345301e5 objc_exception_throw + 33
2   CoreFoundation                  0x3423520f -[__NSArrayM insertObject:atIndex:] + 187
3   dk-rk                           0x00144518 -[YMKMapViewInternal addAnnotation:callDelegate:dropDelay:] (YMKMapViewInternal.m:754)
4   dk-rk                           0x00144718 -[YMKMapViewInternal addAnnotation:] (YMKMapViewInternal.m:782)
5   dk-rk                           0x000ebd05 -[CompanyDetailController configureAnnotation] (CompanyDetailController.m:243)
6   dk-rk                           0x000ede1b -[CompanyDetailController configure] (CompanyDetailController.m:441)
7   dk-rk                           0x000eb219 -[CompanyDetailController viewDidLoad] (CompanyDetailController.m:131)
8   UIKit                           0x376c27ff -[UIViewController view] + 167
9   UIKit                           0x376cec39 -[UIViewController contentScrollView] + 25
10  UIKit                           0x376ceaa9 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 37
11  UIKit                           0x376ce98f -[UINavigationController _layoutViewController:] + 35
12  UIKit                           0x376ce15b -[UINavigationController _startTransition:fromViewController:toViewController:] + 319
13  UIKit                           0x376cdf53 -[UINavigationController _startDeferredTransitionIfNeeded] + 251
14  UIKit                           0x376c2673 -[UINavigationController pushViewController:transition:forceImmediate:] + 807
15  UIKit                           0x376c2349 -[UINavigationController pushViewController:animated:] + 37
16  dk-rk                           0x000e84bf -[CompaniesController companyDetailsLoaded:] (CompaniesController.m:395)
17  dk-rk                           0x000e6d4d -[CompanyDetailsLoaderDelegate objectLoader:didLoadObjects:] (CompaniesController.m:85)
18  dk-rk                           0x001134e7 -[RKObjectLoader informDelegateOfObjectLoadWithResultDictionary:] (RKObjectLoader.m:133)
19  CoreFoundation                  0x342e3814 __invoking___ + 68
20  CoreFoundation                  0x3423e7e1 -[NSInvocation invoke] + 161
21  dk-rk                           0x001024c7 -[RKManagedObjectThreadSafeInvocation performInvocationOnMainThread] (RKManagedObjectThreadSafeInvocation.m:111)
22  CoreFoundation                  0x3423f22b -[NSObject performSelector:withObject:] + 43
23  Foundation                      0x35cca757 __NSThreadPerformPerform + 351
24  CoreFoundation                  0x342b4b03 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
25  CoreFoundation                  0x342b42cf __CFRunLoopDoSources0 + 215
26  CoreFoundation                  0x342b3075 __CFRunLoopRun + 653
27  CoreFoundation                  0x342364dd CFRunLoopRunSpecific + 301
28  CoreFoundation                  0x342363a5 CFRunLoopRunInMode + 105
29  GraphicsServices                0x30abafcd GSEventRunModal + 157
30  UIKit                           0x376b7743 UIApplicationMain + 1091
31  dk-rk                           0x000e522d main (main.m:16)
32  dk-rk                           0x000e51d8 0xe3000 + 8664

Вот код метода создания аннотации. Сделан по анологии с официальным примером:

- (void)configureAnnotation
{
  double latitude;
  double longitude;
  int zoomLevel;
  if (self.company.geocode) {

    latitude = [(NSNumber *)[self.company.geocode valueForKey:@"latitude"] doubleValue];
    longitude = [(NSNumber *)[self.company.geocode valueForKey:@"longitude"] doubleValue];
    zoomLevel = 16;


    self.annotation = [PointAnnotation pointAnnotation];
    self.annotation.coordinate = YMKMapCoordinateMake(latitude, longitude);
    [self.mapView addAnnotation:self.annotation];

  } else {
    latitude = 58.603394;
    longitude = 49.667232;
    zoomLevel = 10;
  }

  CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
  [self.mapView setCenterCoordinate:location.coordinate atZoomLevel:zoomLevel animated:NO];
}

Судя по всему ошибка возникает при вызове приватного метода addAnnotation:callDelegate:dropDelay: но сам я повторить данную ошибку не могу.

Может быть что-нибудь посоветуете?

@rbsgn
Copy link
Contributor

rbsgn commented Feb 16, 2012

Сейчас посмотрим что могло пойти не так.

@rbsgn
Copy link
Contributor

rbsgn commented Feb 16, 2012

Как объявлена property annotation и что возвращает +[PointAnnotation pointAnnotation]? Нет ли некорректного использования autoreleased объекта?

Сейчас ситуация выглядит так, как будто аннотация превратилась в nil в процессе добавления её на карту.

@ploddi
Copy link
Author

ploddi commented Feb 16, 2012

@property (weak, nonatomic) PointAnnotation *annotation;

Спасибо за замечание, видимо ошибка возникает именно из-за этого.

PS. Помнится я поменял обяъвление property на weak пытаясь отследить предыдущую ошибку (прошлый тикет от меня). Подумал, что если контроллер уничтожится раньше mapView, то тот при попытке освободить аннотацию укажет по некоректному указателю. И забыл поменять обратно.

@rbsgn
Copy link
Contributor

rbsgn commented Feb 16, 2012

Тогда закрываю эту issue.

@rbsgn rbsgn closed this as completed Feb 16, 2012
@ghost ghost assigned rbsgn Feb 22, 2012
@alexsorokoletov
Copy link

Сегодня тоже столкнулся с этой проблемой.
Что неприятно, вылазит именно при сабмите приложения (TestFlight или стор). Воспроизвести можно, если запустить на девайсе в Release.
Может быть вы поменяете ваш пример - ведь с него все начинают :)

Спасибо!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants