У меня проблема, но много сообщений о googling и SO не помогло. В моем приложении iOS swift у меня есть контроллер панели вкладок с двумя вкладками. Когда пользователь нажимает на вторую вкладку, приложение переключается на второй экран для создания события. Пользователь может переключаться между двумя вкладками свободно. Хотя на второй вкладке для создания события пользователь может добавить несколько мест размещения кандидатов для события. Способ, которым пользователь может добавить местоположения, должен быть через карту, и я использую MapKit. Я использую push-сегу, чтобы отправить пользователя на новый UIViewController с картой внутри него. Когда пользователь нажимает кнопку добавления местоположения, карта отображается правильно (в настоящее время я не делал никакой логики для взаимодействия с картой). Моя проблема заключается в том, что, если пользователь нажимает на кнопку назад (чтобы закрыть экран карты) и попробуйте еще раз, чтобы добавить место, то UIViewController покажет серую карту и приложение будет висеть на линии:Отображение MapKit во второй раз сбой с EXC_BAD_ACCESS
class AppDelegate: UIResponder, UIApplicationDelegate {
и сообщение об ошибке:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x103c)
#0 0x00699440 in EAGLContext_renderbufferStorageFromDrawable(EAGLContext*, objc_selector*, unsigned int, id<EAGLDrawable>)()
Я знаю, что многие SO сообщения говорили о вопросах памяти, такие как этот SO post и я попробовать свои решения, но это не помогло.
Это очень простой код для моего UIViewController, который показывает карту:
import UIKit
import MapKit
import ObjectMapper
import CoreLocation
class AddRestaurantViewController: UIViewController{
@IBOutlet weak var theMapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad();
println("viewDidLoad")
}
override func viewWillAppear(animated: Bool) {
println("viewWillAppear")
}
override func viewWillDisappear(animated: Bool) {
println("viewWillDisappear")
}
override func viewDidDisappear(animated: Bool) {
self.purgeMapMemory()
}
func purgeMapMemory(){
println("Now purging...")
self.theMapView.mapType = MKMapType.Standard
self.theMapView.removeFromSuperview()
self.theMapView = nil
}
}
Любой намек?
Это происходит именно со мной. В моем случае я нажимаю ViewController, как вы. Более странно, приложение только сбой на моем iPhone 6+ при отладке с помощью xcode. Я все еще ищу проблему. – Jakehao