Как я могу решить Завершение из-за ошибки памяти

Я использую MKMapView в своем большом проекте. когда я загружаю много аннотации (более 700), и я рисую линию между этими точками на MapKit, я получаю сообщение об ошибке xcode «Прекращено из-за ошибки памяти», и приложение сбой. вы можете увидеть на изображении:

введите описание изображения здесь ,

Я добавляю строку следующим образом:

введите описание изображения здесь

если у меня меньше 700 аннотаций, он работает очень хорошо. Я думаю, что у него проблема с памятью. Как я могу решить эту проблему?

// adding annodation for (int i=0; i<[fetcher.locations count]; i++)//fetcher.locations is NSMutableArray and inside have locationInfoClass objects . locationInfoClass is hold CLLocationCoordinate2D. { locationInfoClass * loc=[fetcher2.locations objectAtIndex:i]; CLLocationCoordinate2D coordinate1; coordinate1.latitude = loc.lat; coordinate1.longitude = loc.lon; myAnnotation * ann = [[myAnnotation alloc] initWithCoordinate:annCoordinate title:@"uniqtitle" subtitle:@"uniqsubtitle"]; [mapView addAnnotation:ann]; } #pragma mark - #pragma mark -mapview overlay CLLocationCoordinate2D *coordinates = malloc(sizeof(CLLocationCoordinate2D) * [mapView.annotations count]); for (int i=0; i<[mapView.annotations count]; i++) { myAnnotation * ann=[mapView.annotations objectAtIndex:i]; coordinates[i]=ann.coordinate; } self.routeLine = [MKPolyline polylineWithCoordinates:coordinates count:mapView.annotations.count]; // pinlerin sayısı ne kadarsa o kadar çizgi çiziyor. free(coordinates); [self.mapView setVisibleMapRect:[self.routeLine boundingMapRect]]; //If you want the route to be visible dispatch_async(dispatch_get_main_queue(), ^{ [self.mapView addOverlay:self.routeLine]; }); 

.h файл имеют

 @property (nonatomic, retain) MKPolyline *routeLine; //your line @property (nonatomic, retain) MKPolylineView *routeLineView; //overlay view 

Методы делегирования MKMapView.

 -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay { if(overlay == self.routeLine) { if(nil == self.routeLineView) { self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine]; self.routeLineView.fillColor = [UIColor redColor]; self.routeLineView.strokeColor = [UIColor redColor]; self.routeLineView.lineWidth = 3; } return self.routeLineView; } return nil; } /* - (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views { MKAnnotationView *annotationView = [views objectAtIndex:0]; id <MKAnnotation> mp = [annotationView annotation]; MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 1500, 1500); [mv setRegion:region animated:YES]; }*/ - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { MKAnnotationView *pinView = nil; if(annotation != mapView.userLocation) { static NSString *defaultPinID = @"ftffggf"; pinView = (MKAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; if ( pinView == nil ) pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID]; //pinView.pinColor = MKPinAnnotationColorGreen; pinView.canShowCallout = YES; //pinView.animatesDrop = YES; UIImage * image=[UIImage imageNamed:@"pin.png"]; CGSize size=CGSizeMake(50, 63);//set the width and height pinView.image = image } else { [self.mapView.userLocation setTitle:@"I am here"]; } pinView.centerOffset = CGPointMake(0,-23); return pinView; } 

One Solution collect form web for “Как я могу решить Завершение из-за ошибки памяти”

В последнее время – и с увеличением частоты – я видел одно и то же сообщение об ошибке («Прекращено из-за ошибки памяти») каждый раз, когда я запускал проект из XCode, после почти одной минуты времени выполнения, даже если я не касаюсь приложения после его начала.

Я не видел:

  • Любое удивительное потребление памяти при запуске с профилировщиком.
  • Любые очевидные шаблоны, когда приложение прекращается (кроме периода времени, которое потребовалось, но это заняло некоторое время, чтобы распознать).
  • Любые сообщения об ошибке «Завершение приложения из-за неперехваченного исключения» или трассировки стека в консоли.
  • Любые исключения (исключение: исключение: all; break: on throw).
  • Любые объекты зомби.

Кроме того, я видел, что приложение неожиданно появляется, когда приложение запускается при отладке – случайно не прыгнув обратно в Springboard, если я снова запустил приложение с устройства сразу после его завершения.

Я собирался задать аналогичный вопрос, подробно изложив все эти особенности и спросив, как я могу решить эту проблему.

Затем у меня был момент и заметил два предупреждения о памяти на консоли, хотя профилировщик не обнаружил проблем с памятью.

Zombies. Когда я выключил объекты Zombie, предупреждения о памяти исчезли, и приложение больше не было спонтанно прекращено.

Редактировать:

10 месяцев спустя я обнаружил другую ситуацию, когда это может произойти. Оказалось, бесконечный цикл while также может сделать это:

 while (result==nil) { result = [collectionView indexPathForItemAtPoint:testPoint]; testPoint = nextTestPoint(); // After about 12 seconds, at which point this is several tens of thousands of pixels off the edge of the screen, the app dies from "Memory error" } 
  • Ошибка Xcode 7 при отладке
  • Карфаген: нет общих схем для платформы iOS (для моих собственных фреймворков)
  • Не удалось создать модуль
  • Архив не отображается в Organizer для XCode 4
  • сохранить текущего пользователя в отношении в синтаксическом анализе с быстрым
  • Применение различных атрибутов для разных частей строки NSAttributedstring
  • Класс lldb имеет несовместимый суперкласс
  • XCode: как найти все, затем удалить все отключенные ограничения
  • Как отключить ARC для одного файла в Xcode 5?
  • Размер изображения по умолчанию для слайдера iOS?
  • Что заставляет значок док-станции приложений iOS 11 iPad оставаться серым?
  • Interesting Posts

    CTTelephonyCenterAddObserver не уведомляет о получении SMS-сообщений

    Эквивалент android.content.BroadcastReceiver в Swift

    Ошибка проверки / отправки: проверка неудачного кода приложения

    Как выбрать несколько записей в адресной книге, используя ABPeoplePickerNavigationController

    Как установить собственный размер содержимого пользовательского вида в Swift?

    Как создать NSIndexPath из int?

    Скрытие клавиатуры, когда приложение возвращается из подвески

    как получить доступ к серверу Microsoft Exchange из приложения iPhone?

    почему значок элемента табуляции не изменен

    xcode не локализует определенные строки

    Xcode 7 поддерживает часы OS1 и OS2

    Исключение ячейки UITableview – «Необходимо перевести авторезистирующую маску в ограничения, чтобы иметь _setHostsLayoutEngine: ДА

    Обработчик не вызван после того, как Facebook-браузер переадресовывает запрос на приложение

    Переименование значения plist программно?

    Почему метод «willActivate» в «WKInterfaceController» уже вызван для следующей страницы?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.