2015-11-18 5 views
0

Я добавил MKMapView в свое приложение. как только я добавил, он начал крушить. Но он работает хорошо, и я вижу, что карта загружается в iPhone 4s semulator. Что может быть причиной этого? Я получаю Message from debugger: Terminated due to memory issue это в консоли отладки.iPhone 6 MapView crash

В чем причина этого? Пожалуйста, помогите мне. Спасибо

+0

Причина: «Сообщение от отладчика: завершено из-за проблемы с памятью» Можете ли вы разместить связанный код – Imran

+0

Я не добавил никакого кода. Я добавил Mapview из xib tot he раскадровки. И установите IBOutlet. Также импортирована библиотека. и установите делегат, когда я убираю размер карты, он не падает, но я не могу добавить его больше, я хочу добавить его в полноэкранный режим – user1960169

ответ

0

MKMapView использует больше памяти. поэтому в устройствах с небольшим приложением RAM произойдет сбой.

вы можете освободить часть памяти, используемой MKMapview в viewWillDisappear:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    mapView.mapType = MKMapTypeHybrid; 
    mapView.mapType = MKMapTypeStandard; 
    mapView.showsUserLocation = NO; 
    mapView.delegate = nil; 
    mapView = nil; 
    [mapView removeFromSuperview]; 

} 

Вы можете попробовать это, чтобы освободить часть памяти, которая поможет предотвратить приложение от аварии:

  1. Избегайте Нагромождения autoreleased объекты Когда вы создаете экземпляр объектов, таких как NSString без явного выделения, они живут до освобождения вашего пула автозапуска - обычно, пока ваше приложение не уйдет. Обширное использование таких методов может привести к большому количеству мусора в ОЗУ. Использовать NSString initWithContentsOfFile: , поэтому вы можете позже его освободить вместо NSString stringWithContentsOfFile: . То же правило применяется к UIImage imageNamed: - это не рекомендуется использовать для загрузки изображения.

  2. Предупреждения о предупреждении памяти При обращении с предупреждением о памяти выгружайте ненужные ресурсы. Даже если вы не можете выгрузить любой из ваших вещей, звоните [super didReceiveMemoryWarning] во всех ваших UIViewControllers. Это позволит по умолчанию освободить некоторые ресурсы, такие как элементы управления пользовательским интерфейсом, для не-фронтовых представлений. Неспособность справиться с этим событием может заставить iOS решить, что ваше приложение заслуживает убийства.

  3. Рассмотреть ограниченное использование анимированных переходов просмотров. Анимации, такие как переходы, замечены, чтобы вызвать всплески использования ОЗУ при их выполнении. Эта функция очень аккуратная и должна использоваться во многих случаях, но она может вызывать предупреждения памяти в сильно загруженной среде многозадачности. В частности, мы настоятельно рекомендуем избегать анимации представлений OpenGL.

Надеюсь, что это поможет.