Mapview - контроллер навигации

Я использую приложение IOS с MKMapView. Я использую контроллер навигации, чтобы перейти из главного меню в режим просмотра карты и из режима просмотра карты с помощью кнопки «Назад» снова в главное меню. Это нормально работает !. Но если я добавляю аннотации на карту и нажимаю кнопку «Назад», приложение каждый раз вылетало из строя.

В навигаторе отладки xcode есть ошибка примерно: lldb_unnamed_function1128$$CoreLocation

Также некоторая информация от Crashlytics:

0
CoreLocation    
CLClientCreateIso6709Notation + 31645
1
libobjc.A.dylib 
objc_object::sidetable_release(bool) + 174
2
libobjc.A.dylib 
objc_object::sidetable_release(bool) + 174
3
MapKit  
std::__1::__vector_base<objc_object* __strong, std::__1::allocator<objc_object* __strong> >::~__vector_base() + 28
4
MapKit  
MKQuadTrieNodeFree(MKQuadTrieNode*) + 32
5
MapKit  
__38-[MKQuadTrie clearAllItemsPerforming:]_block_invoke + 72
6
MapKit  
_breadthFirstApply(MKQuadTrieNode*, MKQuadTrieTraversalDirective ()(MKQuadTrieNode*) block_pointer) + 186
7
MapKit  
-[MKQuadTrie clearAllItemsPerforming:] + 166

Что такое lldb_unnamed_function1128$$CoreLocation ошибка

Кто-нибудь может помочь? :)

Код моей кнопки возврата:

- (IBAction)backPressed:(id)sender {
    [self.mapView removeAnnotations:self.mapView.annotations];
    [self.mapView removeOverlays:self.mapView.overlays];
    self.locationManager.delegate = nil;
    self.mapView.delegate = nil;
     NSLog(@"Done!");
}

Код viewForAnnotation:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {

    if (annotation == mapView.userLocation) {
        return nil; // Let map view handle user location annotation
    }

    // Identifyer for reusing annotationviews
    static NSString *annotationIdentifier = @"icon_annotation";

    // Check in queue if there is an annotation view we already can use, else create a new one
    IconAnnotationView *annotationView = (IconAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
    if (!annotationView) {
        annotationView = [[IconAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
        annotationView.canShowCallout = YES;
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    }

    return annotationView;

}

код, который добавляет аннотации (названная кнопка перезагрузки):

- (IBAction)reload:(id)sender {


    [self.mapView removeOverlays:self.mapView.overlays];

    if (!userPressedReload) {

        self.parkPlace1 = [[Place alloc] initWithLong:40.975301  Lat:22.069451 iconStatus:[NSNumber numberWithInt:2] beforeMin:[NSNumber numberWithInt:10]];
        self.parkPlace2 = [[Place alloc] initWithLong:40.981507 Lat:22.057485 iconStatus:[NSNumber numberWithInt:1] beforeMin:[NSNumber numberWithInt:20]];
        [self.mapView addAnnotation:self.parkPlace1];
        [self.mapView addAnnotation:self.parkPlace2];

        userPressedReload = YES;
    }

      self.annotations = [NSMutableArray arrayWithArray:self.mapView.annotations];
    if (self.mapView.userLocation) {
        [self.annotations removeObject:self.mapView.userLocation];
    }

    [self.mapView removeAnnotations:self.annotations];
    [self.mapView addAnnotations:self.annotations];

}

person Anestis Tsoulfas    schedule 19.02.2014    source источник
comment
Было бы полезно, если бы вы разместили код, который используете для добавления аннотации и действия кнопки «Назад» (если это не стандартно).   -  person Gad    schedule 19.02.2014
comment
вы добавили CoreLocation фреймворк?   -  person GoGreen    schedule 19.02.2014
comment
Да я добавил! Приложение работает, проблема в том, что я возвращаюсь в главное меню   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Можете ли вы опубликовать код, относящийся к предыдущему Но если я опущу несколько аннотаций   -  person GoGreen    schedule 19.02.2014
comment
а также попробуйте добавить в свой проект точку останова на исключение, чтобы диагностировать ошибку.   -  person GoGreen    schedule 19.02.2014
comment
Я уже добавил точку останова на исключение. Все переменные экземпляра и свойства имеют нормальные значения. Я могу без проблем перемещаться между главным меню и просмотром карты, если не добавляю аннотации. В обзоре карты у меня есть небольшая кнопка, которая сбрасывает аннотации. Аннотации упали красиво, но теперь, если я нажму кнопку «Назад», приложение выйдет из строя! Вы также можете увидеть следующий код mralek.se/post/9591337792 /, чтобы увидеть, как сбрасываются аннотации   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
вы получаете ту же ошибку даже после использования точки останова исключения? или он выделяет какую-то другую строку в вашем коде?   -  person GoGreen    schedule 19.02.2014
comment
Да ошибка такая же. Если я не добавлю аннотации, приложение будет работать нормально! Взад и вперед взгляды, никаких проблем с памятью, ничего! Когда я добавляю аннотации и нажимаю кнопку возврата, вылетает сбой! Также проверьте этот пример mralek.se/post/9591337792/ потому что аннотации сбрасываются с тем же эффектом.   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Вы упомянули, что у вас есть небольшая кнопка, которая отбрасывает аннотации. Это то же самое, что и - (IBAction)backPressed:(id)sender?   -  person GoGreen    schedule 19.02.2014
comment
Нет, это кнопка возврата.   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
в порядке. Я думаю, вы запутались между кодом кнопки «Назад» и кодом другой кнопки. какой код вы используете для другой кнопки?   -  person GoGreen    schedule 19.02.2014
comment
проверьте выше (кнопка перезагрузки)   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Почему вы снова добавляете аннотации в кнопку перезагрузки? [self.mapView addAnnotations:self.annotations];   -  person GoGreen    schedule 19.02.2014
comment
а также избегайте использования кнопки возврата на панели навигации. вместо этого вы можете записать same code, который вы написали в backPressed:(id)sender, в метод viewDidDisappear. попробуй сделать это.   -  person GoGreen    schedule 19.02.2014
comment
Я удаляю и снова добавляю аннотации с помощью кнопки перезагрузки, позже в процессе разработки я возьму эту информацию из базы данных, поэтому может быть иначе ..... Почему viewDidDisappear не вызвал, когда я нажал кнопку возврата !?   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Он должен быть вызван. вы явно добавляете кнопку возврата в свой xib? в таком случае вам не нужно делать это таким образом, так как это происходит автоматически с панелью навигации и удаляет все подключения к розетке, которые вы сделали с ней.   -  person GoGreen    schedule 19.02.2014
comment
Мне не нужна панель навигации :) Вот почему у меня есть настраиваемая кнопка. Также я где-то обнаружил, что: Обычно, если вы используете контроллер навигации и возвращаетесь к предыдущему представлению с помощью одного из всплывающих методов, viewDidLoad не вызывается снова, потому что представление еще не выгружено .... Я попробую снова :)   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Я также использовал панель навигации по умолчанию контроллера навигации. Опять то же самое! :(   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Что, если вы закомментируете код [self.mapView removeAnnotations:self.mapView.annotations]; [self.mapView removeOverlays:self.mapView.overlays]; в функции нажатия кнопки возврата. это имеет значение?   -  person GoGreen    schedule 19.02.2014
comment
Я сделал это уже! Та же ошибка! :(. Если хотите и у вас есть время, скачайте этот пример с mralek.se/post/9591337792/ и используйте элемент навигации, чтобы увидеть результаты! ...   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
Я думаю, проблема в том, как вы нажимаете mapviewcontroller в стек навигации и как вы удаляете его с помощью кнопки возврата. Можете ли вы поделиться своим кодом через git или что-то еще?   -  person GoGreen    schedule 19.02.2014
comment
Хорошо, но тогда почему у меня нет проблем, если я не добавляю аннотации? По делу все ок!   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
если вам не нужна панель навигации и вы настраиваете кнопку «Назад», то лучше полностью отказаться от использования navigationController. Вместо этого вы можете представить и отклонить mapViewController модально.   -  person GoGreen    schedule 19.02.2014
comment
по этому поводу я не могу сказать, пока не изучу ваш код.   -  person GoGreen    schedule 19.02.2014
comment
Сначала я попробую использовать решение SidePanel ... Я дам вам знать! Спасибо :)   -  person Anestis Tsoulfas    schedule 19.02.2014
comment
в порядке. Удачи с этим! :)   -  person GoGreen    schedule 20.02.2014
comment
Наконец, я использовал решение для бокового скольжения, и все в порядке! :)   -  person Anestis Tsoulfas    schedule 20.02.2014